Cargamos los siguientes datasets:
Para mas información sobre cada uno, se puede visitar el enlace asociado.
data_hurto_raw <- read.csv("hurto.csv")
str(data_hurto_raw)
## 'data.frame': 185105 obs. of 20 variables:
## $ Fecha : Factor w/ 365 levels "01/01/2017 12:00:00 AM",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ Departamento : Factor w/ 32 levels "AMAZONAS","ANTIOQUIA",..: 2 2 2 2 2 2 2 2 2 2 ...
## $ Municipio : Factor w/ 901 levels "ABEJORRAL","ABREGO",..: 443 443 443 443 443 443 443 443 443 443 ...
## $ Día : Factor w/ 7 levels "Domingo","Jueves",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ Hora : Factor w/ 1390 levels "12/31/1899 01:00:00 AM",..: 1040 1040 229 346 346 346 116 801 801 623 ...
## $ Barrio : Factor w/ 13990 levels " VDA. ANDALUCIA",..: 5586 5586 5586 5990 7073 10005 2224 5586 9170 8286 ...
## $ Zona : Factor w/ 3 levels "OTRAS","RURAL",..: 3 3 3 3 3 3 3 3 3 3 ...
## $ Clase.de.sitio : Factor w/ 384 levels "-","AEROPUERTO",..: 382 382 382 382 382 382 382 382 382 84 ...
## $ Arma.empleada : Factor w/ 16 levels "-","ALUCINOGENOS",..: 3 3 3 14 4 14 14 14 4 14 ...
## $ Móvil.Agresor : Factor w/ 15 levels "-","A PIE","BICICLETA",..: 2 2 2 6 12 2 2 2 14 2 ...
## $ Móvil.Victima : Factor w/ 15 levels "-","A PIE","BICICLETA",..: 2 2 2 13 13 2 2 2 5 2 ...
## $ Edad : int 39 43 26 29 37 87 30 59 35 28 ...
## $ Sexo : Factor w/ 3 levels "-","FEMENINO",..: 3 3 2 2 3 3 3 3 3 3 ...
## $ Estado.civil : Factor w/ 7 levels "-","CASADO","DIVORCIADO",..: 6 6 5 6 2 2 5 5 6 6 ...
## $ País.de.nacimiento: Factor w/ 84 levels "-","AFGANISTAN",..: 20 20 20 20 20 20 20 20 20 20 ...
## $ Clase.de.empleado : Factor w/ 36 levels "-","AFRODESCENDIENTE",..: 17 17 17 17 26 30 26 26 26 17 ...
## $ Profesión : Factor w/ 168 levels "-","ADMINISTRACION AGROINDUSTRIAL",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ Escolaridad : Factor w/ 8 levels "-","ANALFABETA",..: 5 4 5 5 5 5 5 5 5 5 ...
## $ Código.DANE : int 5001000 5001000 5001000 5001000 5001000 5001000 5001000 5001000 5001000 5001000 ...
## $ Cantidad : int 1 1 1 1 1 1 1 1 1 1 ...
head(data_hurto_raw)
## Fecha Departamento Municipio Día
## 1 01/01/2017 12:00:00 AM ANTIOQUIA MEDELLÍN (CT) Domingo
## 2 01/01/2017 12:00:00 AM ANTIOQUIA MEDELLÍN (CT) Domingo
## 3 01/01/2017 12:00:00 AM ANTIOQUIA MEDELLÍN (CT) Domingo
## 4 01/01/2017 12:00:00 AM ANTIOQUIA MEDELLÍN (CT) Domingo
## 5 01/01/2017 12:00:00 AM ANTIOQUIA MEDELLÍN (CT) Domingo
## 6 01/01/2017 12:00:00 AM ANTIOQUIA MEDELLÍN (CT) Domingo
## Hora Barrio Zona Clase.de.sitio
## 1 12/31/1899 10:00:00 AM LA CANDELARIA C-10 URBANA VIAS PUBLICAS
## 2 12/31/1899 10:00:00 AM LA CANDELARIA C-10 URBANA VIAS PUBLICAS
## 3 12/31/1899 03:00:00 PM LA CANDELARIA C-10 URBANA VIAS PUBLICAS
## 4 12/31/1899 04:00:00 PM LA LOMA DE LOS BERNAL C-16 URBANA VIAS PUBLICAS
## 5 12/31/1899 04:00:00 PM MANRIQUE 1 C-4 URBANA VIAS PUBLICAS
## 6 12/31/1899 04:00:00 PM SURAMERICANA C-11 URBANA VIAS PUBLICAS
## Arma.empleada Móvil.Agresor Móvil.Victima Edad
## 1 ARMA BLANCA / CORTOPUNZANTE A PIE A PIE 39
## 2 ARMA BLANCA / CORTOPUNZANTE A PIE A PIE 43
## 3 ARMA BLANCA / CORTOPUNZANTE A PIE A PIE 26
## 4 SIN EMPLEO DE ARMAS CONDUCTOR TAXI PASAJERO TAXI 29
## 5 ARMA DE FUEGO PASAJERO MOTOCICLETA PASAJERO TAXI 37
## 6 SIN EMPLEO DE ARMAS A PIE A PIE 87
## Sexo Estado.civil País.de.nacimiento Clase.de.empleado Profesión
## 1 MASCULINO UNION LIBRE COLOMBIA EMPLEADO PARTICULAR -
## 2 MASCULINO UNION LIBRE COLOMBIA EMPLEADO PARTICULAR -
## 3 FEMENINO SOLTERO COLOMBIA EMPLEADO PARTICULAR -
## 4 FEMENINO UNION LIBRE COLOMBIA EMPLEADO PARTICULAR -
## 5 MASCULINO CASADO COLOMBIA INDEPENDIENTE -
## 6 MASCULINO CASADO COLOMBIA PENSIONADO -
## Escolaridad Código.DANE Cantidad
## 1 SECUNDARIA 5001000 1
## 2 PRIMARIA 5001000 1
## 3 SECUNDARIA 5001000 1
## 4 SECUNDARIA 5001000 1
## 5 SECUNDARIA 5001000 1
## 6 SECUNDARIA 5001000 1
data_municipios_raw <- read.csv("municipios.csv")
str(data_municipios_raw)
## 'data.frame': 1123 obs. of 112 variables:
## $ DP : int 5 5 5 5 5 5 5 5 5 5 ...
## $ DPNOM : Factor w/ 34 levels "","Amazonas",..: 3 3 3 3 3 3 3 3 3 3 ...
## $ DPMP : int 5001 5002 5004 5021 5030 5031 5034 5036 5038 5040 ...
## $ MPIO : Factor w/ 1041 levels "Abejorral","Abrego",..: 519 1 3 20 30 31 36 37 38 40 ...
## $ X1985 : Factor w/ 1015 levels "0","1,024","1,116",..: 12 471 516 649 401 272 606 767 122 108 ...
## $ X1986 : Factor w/ 1023 levels "0","1,026","1,055",..: 13 474 521 658 417 283 616 776 139 119 ...
## $ X1987 : Factor w/ 1018 levels "0","1,059","1,093",..: 13 467 530 661 419 288 622 780 143 117 ...
## $ X1988 : Factor w/ 1028 levels "0","1,094","1,130",..: 15 469 529 670 428 297 628 789 152 124 ...
## $ X1989 : Factor w/ 1028 levels "0","1,011","1,011,952",..: 16 470 538 678 440 302 627 791 155 126 ...
## $ X1990 : Factor w/ 1026 levels "0","1,030,294",..: 17 465 536 671 443 303 621 790 153 125 ...
## $ X1991 : Factor w/ 1035 levels "0","1,039","1,046,745",..: 19 465 537 675 450 309 634 807 158 130 ...
## $ X1992 : Factor w/ 1033 levels "0","1,032","1,060,949",..: 17 452 532 669 454 313 632 812 158 131 ...
## $ X1993 : Factor w/ 1048 levels "0","1,070","1,072,677",..: 20 457 543 679 469 327 644 825 165 143 ...
## $ X1994 : Factor w/ 1049 levels "0","1,081,892",..: 20 455 543 681 476 333 648 834 168 150 ...
## $ X1995 : Factor w/ 1051 levels "0","1,009","1,088,918",..: 22 445 542 682 481 331 648 843 162 149 ...
## $ X1996 : Factor w/ 1062 levels "0","1,061","1,094,276",..: 23 447 553 692 491 345 663 853 171 170 ...
## $ X1997 : Factor w/ 1080 levels "0","1,098,589",..: 24 443 555 689 496 357 668 867 175 184 ...
## $ X1998 : Factor w/ 1081 levels "0","1,102,552",..: 27 439 555 686 499 361 668 878 184 195 ...
## $ X1999 : Factor w/ 1086 levels "0","1,034","1,106,762",..: 377 437 560 686 505 372 673 881 174 201 ...
## $ X2000 : Factor w/ 1100 levels "0","1,070","1,093",..: 385 440 421 693 515 379 685 918 175 221 ...
## $ X2001 : Factor w/ 1095 levels "0","1,084","1,106",..: 380 437 413 683 513 418 729 920 165 220 ...
## $ X2002 : Factor w/ 1110 levels "0","1,075","1,123,862",..: 385 436 417 612 522 426 740 942 164 226 ...
## $ X2003 : Factor w/ 1098 levels "0","1,065","1,130,964",..: 384 431 415 604 523 427 735 942 165 229 ...
## $ X2004 : Factor w/ 1106 levels "0","1,055","1,138,545",..: 383 428 408 605 525 427 740 950 156 234 ...
## $ X2005 : Factor w/ 1099 levels "0","1,048","1,146,498",..: 384 425 407 604 529 430 741 959 151 240 ...
## $ X2006 : Factor w/ 1106 levels "0","1,042","1,154,642",..: 386 425 402 603 531 434 745 963 147 246 ...
## $ X2007 : Factor w/ 1109 levels "0","1,004","1,035",..: 396 431 408 606 540 442 758 978 150 256 ...
## $ X2008 : Factor w/ 1102 levels "1,017","1,029",..: 390 369 398 592 531 435 751 985 131 251 ...
## $ X2009 : Factor w/ 1106 levels "1,022","1,029",..: 395 369 400 593 538 440 757 994 122 258 ...
## $ X2010 : Factor w/ 1105 levels "1,004","1,015",..: 390 364 393 589 538 442 760 1005 105 266 ...
## $ X2011 : Factor w/ 1111 levels "1,007","1,029",..: 390 360 389 585 541 447 763 1018 106 273 ...
## $ X2012 : Factor w/ 1108 levels "1,000","1,041",..: 381 355 376 574 537 443 760 1018 100 269 ...
## $ X2013 : Factor w/ 1107 levels "1,078","1,089",..: 381 344 371 569 540 445 762 1028 93 269 ...
## $ X2014 : Factor w/ 1101 levels "1,090","1,105",..: 384 341 369 566 538 444 759 1027 90 272 ...
## $ X2015 : Factor w/ 1105 levels "1,001,755","1,102",..: 380 339 360 568 541 443 761 1035 85 279 ...
## $ X2016 : Factor w/ 1111 levels "1,013,389","1,094",..: 379 331 355 567 543 445 765 1055 80 282 ...
## $ X2017 : Factor w/ 1100 levels "1,024,882","1,066",..: 378 327 349 561 542 443 762 1057 79 289 ...
## $ X2018 : Factor w/ 1105 levels "1,036,134","1,038",..: 381 326 29 566 599 449 770 1075 81 295 ...
## $ X2019 : Factor w/ 1107 levels "1,021","1,047,005",..: 379 315 27 562 600 450 773 1080 69 295 ...
## $ X2020 : Factor w/ 1100 levels "1,006","1,057,445",..: 376 310 27 560 597 448 770 1079 63 296 ...
## $ X1985.1: Factor w/ 973 levels "0","1,008","1,011",..: 80 827 875 282 897 834 239 125 329 482 ...
## $ X1986.1: Factor w/ 981 levels "0","1,013","1,017",..: 78 826 878 285 911 844 230 127 336 481 ...
## $ X1987.1: Factor w/ 967 levels "0","1,000","1,001",..: 86 787 903 274 923 836 216 122 326 461 ...
## $ X1988.1: Factor w/ 977 levels "0","1,003","1,004",..: 89 787 916 285 939 883 222 125 333 459 ...
## $ X1989.1: Factor w/ 969 levels "0","1,008,752",..: 90 785 908 288 938 883 230 129 336 461 ...
## $ X1990.1: Factor w/ 991 levels "0","1,014","1,018",..: 98 795 930 287 962 910 230 139 335 467 ...
## $ X1991.1: Factor w/ 987 levels "0","1,001","1,002",..: 106 790 930 290 965 912 227 146 338 471 ...
## $ X1992.1: Factor w/ 984 levels "0","1,015","1,020",..: 106 791 932 287 155 919 223 276 339 479 ...
## $ X1993.1: Factor w/ 992 levels "0","1,008","1,010",..: 112 790 934 281 157 947 220 287 331 482 ...
## $ X1994.1: Factor w/ 1001 levels "0","1,020","1,026",..: 119 792 946 286 165 957 227 306 335 506 ...
## $ X1995.1: Factor w/ 1011 levels "0","1,000","1,002",..: 129 795 962 291 174 976 234 335 336 524 ...
## $ X1996.1: Factor w/ 1018 levels "0","1,010","1,014",..: 139 807 973 300 188 990 243 369 340 547 ...
## $ X1997.1: Factor w/ 1037 levels "0","1,004","1,005",..: 149 823 992 305 202 1012 260 394 346 573 ...
## $ X1998.1: Factor w/ 1028 levels "0","1,017","1,020",..: 147 816 1005 294 202 158 258 475 334 623 ...
## $ X1999.1: Factor w/ 1048 levels "0","1,007","1,015",..: 156 832 1022 293 207 161 264 503 330 651 ...
## $ X2000.1: Factor w/ 1051 levels "0","1,000","1,013",..: 305 841 1007 160 218 173 276 532 336 675 ...
## $ X2001.1: Factor w/ 1059 levels "0","1,003","1,005",..: 313 837 1016 156 231 174 288 550 339 683 ...
## $ X2002.1: Factor w/ 1051 levels "0","1,000","1,003",..: 320 836 1004 150 239 176 289 551 335 686 ...
## $ X2003.1: Factor w/ 1056 levels "0","1,001","1,005",..: 324 839 1008 149 235 170 284 565 329 695 ...
## $ X2004.1: Factor w/ 1059 levels "0","1,002","1,009",..: 333 846 1009 148 241 175 294 623 328 747 ...
## $ X2005.1: Factor w/ 1054 levels "0","1,001","1,015",..: 329 842 998 144 243 179 296 631 315 749 ...
## $ X2006.1: Factor w/ 1054 levels "0","1,000","1,018",..: 329 839 993 138 245 181 302 646 310 756 ...
## $ X2007.1: Factor w/ 1071 levels "0","1,000","1,011",..: 341 850 1007 141 253 188 310 671 317 779 ...
## $ X2008.1: Factor w/ 1057 levels "0","1,001","1,013",..: 345 844 996 138 260 194 431 666 314 769 ...
## $ X2009.1: Factor w/ 1058 levels "0","1,009","1,011",..: 351 847 993 137 267 200 433 672 156 781 ...
## $ X2010.1: Factor w/ 1058 levels "0","1,006","1,017",..: 358 855 996 133 271 201 440 686 149 834 ...
## $ X2011.1: Factor w/ 1054 levels "0","1,002","1,004",..: 354 851 990 123 268 193 438 682 142 835 ...
## $ X2012.1: Factor w/ 1059 levels "0","1,000","1,017",..: 360 854 956 127 273 198 439 718 138 845 ...
## $ X2013.1: Factor w/ 1060 levels "0","1,003","1,013",..: 363 863 958 119 275 196 442 734 130 859 ...
## $ X2014.1: Factor w/ 1071 levels "0","1,006","1,014",..: 378 875 960 121 286 209 457 752 129 874 ...
## $ X2015.1: Factor w/ 1061 levels "0","1,018","1,025",..: 365 858 943 114 275 196 449 744 116 861 ...
## $ X2016.1: Factor w/ 1064 levels "0","1,001","1,010",..: 370 859 943 116 283 202 453 752 115 869 ...
## $ X2017.1: Factor w/ 1058 levels "0","1,016","1,018",..: 379 860 940 112 289 209 454 759 108 904 ...
## $ X2018.1: Factor w/ 1065 levels "0","1,010","1,018",..: 385 873 951 113 293 210 466 772 106 920 ...
## $ X2019.1: Factor w/ 1068 levels "0","1,003","1,005,981",..: 392 877 913 113 293 211 473 775 104 925 ...
## $ X2020.1: Factor w/ 1073 levels "0","1,010","1,013",..: 389 874 903 114 292 206 471 774 100 931 ...
## $ X1985.2: Factor w/ 1005 levels "0","1,019","1,024",..: 724 292 327 366 156 50 405 546 59 950 ...
## $ X1986.2: Factor w/ 1014 levels "0","1,029","1,055",..: 815 303 337 376 173 54 418 556 64 961 ...
## $ X1987.2: Factor w/ 1018 levels "0","1,002","1,053",..: 810 299 337 372 183 51 419 559 70 963 ...
## $ X1988.2: Factor w/ 1011 levels "0","1,054","1,099",..: 883 303 341 380 191 53 416 560 77 960 ...
## $ X1989.2: Factor w/ 1013 levels "0","1,011","1,082",..: 887 302 339 374 196 51 423 567 78 963 ...
## $ X1990.2: Factor w/ 1013 levels "0","1,048","1,165",..: 894 297 341 373 196 51 420 569 80 967 ...
## $ X1991.2: Factor w/ 1028 levels "0","1,076","1,086",..: 960 291 342 376 197 1024 425 580 86 984 ...
## $ X1992.2: Factor w/ 1019 levels "0","1,003","1,032",..: 950 282 333 362 185 1012 420 570 81 972 ...
## $ X1993.2: Factor w/ 1042 levels "0","1,010","1,070",..: 971 283 346 378 199 1032 436 582 89 997 ...
## $ X1994.2: Factor w/ 1028 levels "0","1,009","1,020",..: 903 277 354 382 202 1017 442 584 97 989 ...
## $ X1995.2: Factor w/ 1053 levels "0","1,009","1,019",..: 926 270 355 377 208 1038 452 571 96 1014 ...
## $ X1996.2: Factor w/ 1046 levels "0","1,030","1,046",..: 926 263 352 371 211 1032 461 561 95 1013 ...
## $ X1997.2: Factor w/ 1057 levels "0","1,042","1,061",..: 858 258 344 356 212 1039 458 554 82 1030 ...
## $ X1998.2: Factor w/ 1066 levels "0","1,054","1,078",..: 856 259 343 351 211 1050 448 551 88 1036 ...
## $ X1999.2: Factor w/ 1069 levels "0","1,034","1,054",..: 794 252 346 354 210 1048 452 550 84 1040 ...
## $ X2000.2: Factor w/ 1074 levels "0","1,062","1,070",..: 789 246 332 338 204 1048 442 539 88 1041 ...
## $ X2001.2: Factor w/ 1087 levels "0","1,042","1,051",..: 716 247 334 341 205 1062 450 548 94 1063 ...
## $ X2002.2: Factor w/ 1082 levels "0","1,000","1,021",..: 705 243 59 334 204 1054 444 533 88 1057 ...
## $ X2003.2: Factor w/ 1083 levels "0","1,005","1,006",..: 710 233 56 64 194 1052 443 528 90 1059 ...
## $ X2004.2: Factor w/ 1087 levels "0","1,028","1,045",..: 699 221 54 61 190 1058 441 528 87 1066 ...
## $ X2005.2: Factor w/ 1082 levels "0","1,002","1,010",..: 591 215 54 63 189 1060 436 524 85 1067 ...
## $ X2006.2: Factor w/ 1092 levels "0","1,006","1,013",..: 596 214 51 63 184 1072 442 531 81 1078 ...
## $ X2007.2: Factor w/ 1088 levels "0","1,002","1,004",..: 589 204 45 60 177 1064 433 528 73 1070 ...
## [list output truncated]
head(data_municipios_raw)
## DP DPNOM DPMP MPIO X1985 X1986 X1987 X1988
## 1 5 Antioquia 5001 Medellín 1,535,955 1,565,394 1,595,095 1,625,321
## 2 5 Antioquia 5002 Abejorral 26,049 25,813 25,575 25,331
## 3 5 Antioquia 5004 Abriaquí 3,067 3,098 3,127 3,156
## 4 5 Antioquia 5021 Alejandría 4,909 4,903 4,895 4,886
## 5 5 Antioquia 5030 Amagá 21,984 22,313 22,644 22,974
## 6 5 Antioquia 5031 Amalfi 17,515 17,719 17,926 18,134
## X1989 X1990 X1991 X1992 X1993 X1994 X1995
## 1 1,656,333 1,688,394 1,721,767 1,756,711 1,793,491 1,832,197 1,872,241
## 2 25,071 24,789 24,479 24,129 23,735 23,297 22,875
## 3 3,179 3,201 3,214 3,222 3,220 3,209 3,187
## 4 4,872 4,851 4,823 4,784 4,732 4,666 4,589
## 5 23,296 23,606 23,901 24,173 24,419 24,633 24,823
## 6 18,339 18,535 18,727 18,907 19,070 19,216 19,344
## X1996 X1997 X1998 X1999 X2000 X2001 X2002
## 1 1,912,860 1,953,293 1,992,781 2,030,560 2,065,871 2,098,618 2,129,874
## 2 22,479 22,109 21,768 21,462 21,195 20,966 20,759
## 3 3,158 3,121 3,076 3,027 2,971 2,912 2,856
## 4 4,503 4,412 4,319 4,226 4,137 4,053 3,978
## 5 25,002 25,175 25,356 25,553 25,775 26,027 26,294
## 6 19,463 19,574 19,681 19,788 19,899 20,019 20,139
## X2003 X2004 X2005 X2006 X2007 X2008 X2009
## 1 2,159,609 2,187,831 2,214,494 2,239,003 2,265,244 2,291,378 2,317,336
## 2 20,570 20,401 20,249 20,113 20,022 19,930 19,853
## 3 2,799 2,744 2,690 2,636 2,570 2,504 2,458
## 4 3,912 3,858 3,816 3,789 3,747 3,724 3,688
## 5 26,571 26,858 27,155 27,455 27,709 27,950 28,192
## 6 20,262 20,391 20,525 20,665 20,826 20,985 21,138
## X2010 X2011 X2012 X2013 X2014 X2015 X2016
## 1 2,343,049 2,368,282 2,393,011 2,417,325 2,441,123 2,464,322 2,486,723
## 2 19,750 19,672 19,570 19,478 19,382 19,290 19,195
## 3 2,397 2,336 2,290 2,231 2,175 2,128 2,075
## 4 3,652 3,618 3,575 3,550 3,502 3,466 3,435
## 5 28,433 28,664 28,897 29,117 29,339 29,555 29,770
## 6 21,295 21,449 21,615 21,768 21,932 22,088 22,253
## X2017 X2018 X2019 X2020 X1985.1 X1986.1 X1987.1
## 1 2,508,452 2,529,403 2,549,537 2,569,007 1,479,540 1,503,563 1,528,065
## 2 19,096 18,991 18,882 18,779 7,161 7,075 6,992
## 3 2,019 1,971 1,918 1,870 783 793 803
## 4 3,393 3,361 3,307 3,278 2,000 2,015 2,030
## 5 29,980 30,181 30,376 30,561 8,780 8,955 9,135
## 6 22,414 22,567 22,714 22,860 7,416 7,636 7,859
## X1988.1 X1989.1 X1990.1 X1991.1 X1992.1 X1993.1 X1994.1
## 1 1,553,523 1,580,416 1,609,222 1,640,420 1,674,486 1,711,901 1,752,866
## 2 6,915 6,841 6,771 6,706 6,643 6,583 6,525
## 3 814 824 836 846 857 867 877
## 4 2,045 2,059 2,070 2,080 2,087 2,089 2,086
## 5 9,323 9,518 9,721 9,935 10,159 10,394 10,639
## 6 8,083 8,307 8,526 8,744 8,957 9,160 9,354
## X1995.1 X1996.1 X1997.1 X1998.1 X1999.1 X2000.1 X2001.1
## 1 1,796,485 1,841,583 1,886,988 1,931,527 1,974,026 2,013,312 2,049,139
## 2 6,474 6,430 6,392 6,357 6,327 6,300 6,279
## 3 885 893 897 900 900 896 889
## 4 2,079 2,068 2,054 2,037 2,017 1,995 1,972
## 5 10,896 11,168 11,451 11,748 12,057 12,380 12,716
## 6 9,537 9,712 9,877 10,032 10,176 10,310 10,437
## X2002.1 X2003.1 X2004.1 X2005.1 X2006.1 X2007.1 X2008.1
## 1 2,083,308 2,115,793 2,146,598 2,175,681 2,201,335 2,228,669 2,255,845
## 2 6,265 6,259 6,260 6,271 6,291 6,317 6,351
## 3 883 875 866 858 849 840 831
## 4 1,950 1,930 1,912 1,896 1,884 1,874 1,864
## 5 13,053 13,391 13,730 14,070 14,411 14,719 15,011
## 6 10,561 10,684 10,809 10,936 11,068 11,209 11,347
## X2009.1 X2010.1 X2011.1 X2012.1 X2013.1 X2014.1 X2015.1
## 1 2,282,794 2,309,446 2,335,568 2,361,134 2,386,233 2,410,765 2,434,647
## 2 6,391 6,439 6,493 6,540 6,587 6,636 6,681
## 3 821 811 800 788 776 764 751
## 4 1,854 1,845 1,837 1,830 1,824 1,818 1,812
## 5 15,294 15,568 15,827 16,076 16,312 16,540 16,757
## 6 11,479 11,611 11,739 11,869 11,991 12,116 12,236
## X2016.1 X2017.1 X2018.1 X2019.1 X2020.1 X1985.2 X1986.2
## 1 2,457,680 2,479,990 2,501,470 2,522,081 2,541,978 56,415 61,831
## 2 6,724 6,765 6,802 6,835 6,865 18,888 18,738
## 3 738 724 710 695 680 2,284 2,305
## 4 1,808 1,804 1,801 1,799 1,797 2,909 2,888
## 5 16,973 17,174 17,370 17,551 17,730 13,204 13,358
## 6 12,359 12,477 12,589 12,696 12,798 10,099 10,083
## X1987.2 X1988.2 X1989.2 X1990.2 X1991.2 X1992.2 X1993.2 X1994.2 X1995.2
## 1 67,030 71,798 75,917 79,172 81,347 82,225 81,590 79,331 75,756
## 2 18,583 18,416 18,230 18,018 17,773 17,486 17,152 16,772 16,401
## 3 2,324 2,342 2,355 2,365 2,368 2,365 2,353 2,332 2,302
## 4 2,865 2,841 2,813 2,781 2,743 2,697 2,643 2,580 2,510
## 5 13,509 13,651 13,778 13,885 13,966 14,014 14,025 13,994 13,927
## 6 10,067 10,051 10,032 10,009 9,983 9,950 9,910 9,862 9,807
## X1996.2 X1997.2 X1998.2 X1999.2 X2000.2 X2001.2 X2002.2 X2003.2 X2004.2
## 1 71,277 66,305 61,254 56,534 52,559 49,479 46,566 43,816 41,233
## 2 16,049 15,717 15,411 15,135 14,895 14,687 14,494 14,311 14,141
## 3 2,265 2,224 2,176 2,127 2,075 2,023 1,973 1,924 1,878
## 4 2,435 2,358 2,282 2,209 2,142 2,081 2,028 1,982 1,946
## 5 13,834 13,724 13,608 13,496 13,395 13,311 13,241 13,180 13,128
## 6 9,751 9,697 9,649 9,612 9,589 9,582 9,578 9,578 9,582
## X2005.2 X2006.2 X2007.2 X2008.2 X2009.2 X2010.2 X2011.2 X2012.2 X2013.2
## 1 38,813 37,668 36,575 35,533 34,542 33,603 32,714 31,877 31,092
## 2 13,978 13,822 13,705 13,579 13,462 13,311 13,179 13,030 12,891
## 3 1,832 1,787 1,730 1,673 1,637 1,586 1,536 1,502 1,455
## 4 1,920 1,905 1,873 1,860 1,834 1,807 1,781 1,745 1,726
## 5 13,085 13,044 12,990 12,939 12,898 12,865 12,837 12,821 12,805
## 6 9,589 9,597 9,617 9,638 9,659 9,684 9,710 9,746 9,777
## X2014.2 X2015.2 X2016.2 X2017.2 X2018.2 X2019.2 X2020.2
## 1 30,358 29,675 29,043 28,462 27,933 27,456 27,029
## 2 12,746 12,609 12,471 12,331 12,189 12,047 11,914
## 3 1,411 1,377 1,337 1,295 1,261 1,223 1,190
## 4 1,684 1,654 1,627 1,589 1,560 1,508 1,481
## 5 12,799 12,798 12,797 12,806 12,811 12,825 12,831
## 6 9,816 9,852 9,894 9,937 9,978 10,018 10,062
data_educacion_raw <- read.csv("educacion.csv")
str(data_educacion_raw)
## 'data.frame': 661 obs. of 37 variables:
## $ AÑO : int 2012 2013 2011 2014 2017 2015 2016 2014 2011 2013 ...
## $ CÓDIGO_ETC : int 3828 3828 3828 3828 3828 3828 3828 3758 3758 3758 ...
## $ ETC : Factor w/ 95 levels "Amazonas (ETC)",..: 1 1 1 1 1 1 1 2 2 2 ...
## $ POBLACIÓN_5_16 : int 22194 22123 22223 22167 22269 22212 22243 586947 599438 590211 ...
## $ TASA_MATRICULACIÓN_5_16 : num 8.19e+14 8.18e+01 8.23e+01 8.21e+01 8.36e+01 ...
## $ COBERTURA_NETA : num 81.9 81.8 82.3 82.1 82.1 ...
## $ COBERTURA_NETA_TRANSICIÓN : num 60.2 48.4 63.7 43.9 49 ...
## $ COBERTURA_NETA_PRIMARIA : num 85.6 84 87.2 84.9 80.6 ...
## $ COBERTURA_NETA_SECUNDARIA : num 53.3 58.2 50.6 57.7 60.7 ...
## $ COBERTURA_NETA_MEDIA : num 22.3 22.1 21.9 23.1 30.1 ...
## $ COBERTURA_BRUTA : num 94.8 95.4 94.5 95.7 96.6 ...
## $ COBERTURA_BRUTA_TRANSICIÓN : num 60.2 96.9 94.5 89.5 92.6 ...
## $ COBERTURA_BRUTA_PRIMARIA : num 85.6 111.8 117.8 114 108 ...
## $ COBERTURA_BRUTA_SECUNDARIA : num 53.3 91.2 82.5 89.1 94.3 ...
## $ COBERTURA_BRUTA_MEDIA : num 22.3 59.6 58 63.3 72.2 ...
## $ TAMAÑO_PROMEDIO_DE_GRUPO : num 19.3 27.6 14.9 20.3 21 ...
## $ SEDES_CONECTADAS_A_INTERNET: num 20.9 12.8 36.4 16.5 16.5 ...
## $ DESERCIÓN : num 4.7 3.29 5.46 3.04 4.88 4.76 5.06 2.68 4.16 3.84 ...
## $ DESERCIÓN_TRANSICIÓN : num 5.16 3.16 5.56 2.97 6.38 4.54 5.23 2.4 3.89 3.36 ...
## $ DESERCIÓN_PRIMARIA : num 2.3 1.82 3.67 1.95 3.06 2.53 2.75 2.26 3.93 3.27 ...
## $ DESERCIÓN_SECUNDARIA : num 7.97 5.26 8.21 4.67 6.98 8 8.49 3.55 4.71 5.03 ...
## $ DESERCIÓN_MEDIA : num 8.06 5.57 7.9 4.35 6.23 6.69 5.96 2.23 3.87 3.28 ...
## $ APROBACIÓN : num 93.7 95.8 91.2 96.9 87.5 ...
## $ APROBACIÓN_TRANSICIÓN : num 94.8 96.8 94.3 97 92.7 ...
## $ APROBACIÓN_PRIMARIA : num 95.8 97 92.8 98 90 ...
## $ APROBACIÓN_SECUNDARIA : num 90.7 94.2 88.6 95.3 82 ...
## $ APROBACIÓN_MEDIA : num 90 92.3 85.2 95.7 86.6 ...
## $ REPROBACIÓN : num 1.56 0.93 3.38 0.03 7.67 6.01 5.83 1.02 3.67 5.01 ...
## $ REPROBACIÓN_TRANSICIÓN : num 0 0 0.17 0 0.91 0.27 0.32 0.06 0.13 0.17 ...
## $ REPROBACIÓN_PRIMARIA : num 1.92 1.13 3.5 0.03 6.91 6.92 5.97 0.84 3.2 4.74 ...
## $ REPROBACIÓN_SECUNDARIA : num 1.35 0.56 3.16 0.05 11.01 ...
## $ REPROBACIÓN_MEDIA : num 1.98 2.12 6.95 0 7.19 4.79 5.79 1.44 5.69 6.06 ...
## $ REPITENCIA : num 3.9 4.32 1.65 6.3 5.96 5.15 6.61 1.87 2.02 1.7 ...
## $ REPITENCIA_TRANSICIÓN : num 0.67 2.46 0.65 2.77 3.3 1.36 1.66 0.19 0.15 0.19 ...
## $ REPITENCIA_PRIMARIA : num 3.32 4.41 2.02 6.83 7.06 5.14 7.5 1.77 1.94 1.59 ...
## $ REPITENCIA_SECUNDARIA : num 6.17 5.16 1.39 7.25 6.05 6.39 7.17 2.69 2.89 2.44 ...
## $ REPITENCIA_MEDIA : num 3.39 2.58 1.34 3.17 2.42 4.15 4.14 1.09 1.24 1.19 ...
head(data_educacion_raw)
## AÑO CÓDIGO_ETC ETC POBLACIÓN_5_16 TASA_MATRICULACIÓN_5_16
## 1 2012 3828 Amazonas (ETC) 22194 8.187348e+14
## 2 2013 3828 Amazonas (ETC) 22123 8.184000e+01
## 3 2011 3828 Amazonas (ETC) 22223 8.234000e+01
## 4 2014 3828 Amazonas (ETC) 22167 8.213000e+01
## 5 2017 3828 Amazonas (ETC) 22269 8.360000e+01
## 6 2015 3828 Amazonas (ETC) 22212 8.149000e+01
## COBERTURA_NETA COBERTURA_NETA_TRANSICIÓN COBERTURA_NETA_PRIMARIA
## 1 81.87 60.22 85.62
## 2 81.83 48.38 83.96
## 3 82.32 63.68 87.23
## 4 82.11 43.91 84.93
## 5 82.10 48.95 80.56
## 6 81.46 40.65 82.75
## COBERTURA_NETA_SECUNDARIA COBERTURA_NETA_MEDIA COBERTURA_BRUTA
## 1 53.33 22.31 94.76
## 2 58.22 22.09 95.41
## 3 50.65 21.91 94.53
## 4 57.69 23.09 95.65
## 5 60.67 30.05 96.56
## 6 59.41 26.52 95.76
## COBERTURA_BRUTA_TRANSICIÓN COBERTURA_BRUTA_PRIMARIA
## 1 60.22 85.62
## 2 96.86 111.83
## 3 94.49 117.82
## 4 89.50 114.05
## 5 92.62 108.00
## 6 79.35 111.01
## COBERTURA_BRUTA_SECUNDARIA COBERTURA_BRUTA_MEDIA
## 1 53.33 22.31
## 2 91.23 59.61
## 3 82.46 58.01
## 4 89.12 63.26
## 5 94.30 72.21
## 6 94.27 67.01
## TAMAÑO_PROMEDIO_DE_GRUPO SEDES_CONECTADAS_A_INTERNET DESERCIÓN
## 1 19.340 20.91 4.70
## 2 27.600 12.84 3.29
## 3 14.950 36.36 5.46
## 4 20.290 16.51 3.04
## 5 20.971 16.50 4.88
## 6 20.130 16.36 4.76
## DESERCIÓN_TRANSICIÓN DESERCIÓN_PRIMARIA DESERCIÓN_SECUNDARIA
## 1 5.16 2.30 7.97
## 2 3.16 1.82 5.26
## 3 5.56 3.67 8.21
## 4 2.97 1.95 4.67
## 5 6.38 3.06 6.98
## 6 4.54 2.53 8.00
## DESERCIÓN_MEDIA APROBACIÓN APROBACIÓN_TRANSICIÓN APROBACIÓN_PRIMARIA
## 1 8.06 93.74 94.84 95.78
## 2 5.57 95.78 96.84 97.05
## 3 7.90 91.16 94.27 92.83
## 4 4.35 96.93 97.03 98.02
## 5 6.23 87.45 92.71 90.04
## 6 6.69 89.23 95.19 90.55
## APROBACIÓN_SECUNDARIA APROBACIÓN_MEDIA REPROBACIÓN
## 1 90.68 89.96 1.56
## 2 94.17 92.31 0.93
## 3 88.63 85.15 3.38
## 4 95.28 95.65 0.03
## 5 82.00 86.58 7.67
## 6 85.73 88.52 6.01
## REPROBACIÓN_TRANSICIÓN REPROBACIÓN_PRIMARIA REPROBACIÓN_SECUNDARIA
## 1 0.00 1.92 1.35
## 2 0.00 1.13 0.56
## 3 0.17 3.50 3.16
## 4 0.00 0.03 0.05
## 5 0.91 6.91 11.01
## 6 0.27 6.92 6.27
## REPROBACIÓN_MEDIA REPITENCIA REPITENCIA_TRANSICIÓN REPITENCIA_PRIMARIA
## 1 1.98 3.90 0.67 3.32
## 2 2.12 4.32 2.46 4.41
## 3 6.95 1.65 0.65 2.02
## 4 0.00 6.30 2.77 6.83
## 5 7.19 5.96 3.30 7.06
## 6 4.79 5.15 1.36 5.14
## REPITENCIA_SECUNDARIA REPITENCIA_MEDIA
## 1 6.17 3.39
## 2 5.16 2.58
## 3 1.39 1.34
## 4 7.25 3.17
## 5 6.05 2.42
## 6 6.39 4.15
data_incauta_raw <- read.csv("Incautafuego_2017.csv")
str(data_incauta_raw)
## 'data.frame': 20508 obs. of 10 variables:
## $ FECHA : Factor w/ 365 levels "01/01/2017","01/02/2017",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ DEPARTAMENTO : Factor w/ 32 levels "AMAZONAS","ANTIOQUIA",..: 1 2 2 2 2 5 5 5 5 5 ...
## $ MUNICIPIO : Factor w/ 978 levels "ABEJORRAL","ABREGO",..: 447 38 310 766 827 511 511 511 511 511 ...
## $ DÍA : Factor w/ 7 levels "Domingo","Jueves",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ CLASE.DE.ARMA : Factor w/ 11 levels "AMETRALLADORA",..: 10 10 10 9 3 2 5 7 9 10 ...
## $ PERMISO : Factor w/ 2 levels "CON PERMISO",..: 1 2 2 2 1 2 2 2 2 2 ...
## $ ZONA : Factor w/ 2 levels "RURAL","URBANA": 1 2 1 1 1 1 1 1 1 1 ...
## $ CLASE.DE.SITIO: Factor w/ 128 levels "AEROPUERTO","ALCALDIA",..: 127 127 127 50 50 128 128 128 128 128 ...
## $ CÓDIGO.DANE : int 91001000 5040000 5282000 5674000 5761000 13458000 13458000 13458000 13458000 13458000 ...
## $ CANTIDAD : int 1 1 1 1 1 1 13 1 3 2 ...
head(data_incauta_raw)
## FECHA DEPARTAMENTO MUNICIPIO DÍA CLASE.DE.ARMA PERMISO
## 1 01/01/2017 AMAZONAS LETICIA (CT) Domingo REVOLVER CON PERMISO
## 2 01/01/2017 ANTIOQUIA ANORÍ Domingo REVOLVER SIN PERMISO
## 3 01/01/2017 ANTIOQUIA FREDONIA Domingo REVOLVER SIN PERMISO
## 4 01/01/2017 ANTIOQUIA SAN VICENTE Domingo PISTOLA SIN PERMISO
## 5 01/01/2017 ANTIOQUIA SOPETRÁN Domingo ESCOPETA CON PERMISO
## 6 01/01/2017 BOLÍVAR MONTECRISTO Domingo CARABINA SIN PERMISO
## ZONA CLASE.DE.SITIO CÓDIGO.DANE CANTIDAD
## 1 RURAL VIAS PUBLICAS 91001000 1
## 2 URBANA VIAS PUBLICAS 5040000 1
## 3 RURAL VIAS PUBLICAS 5282000 1
## 4 RURAL FINCAS Y SIMILARES 5674000 1
## 5 RURAL FINCAS Y SIMILARES 5761000 1
## 6 RURAL ZONA SELVÁTICA 13458000 1
Limpiaremos los dataset.
Se eliminan las columnas:
Fecha: No se pretende realizar analisis de hurtos reportados en el tiempoHora: No se pretende realizar analisis de hurtos reportados en el tiempoBarrio: Demasiados factores para analizar, no sería posible responder una de las preguntas observando esta variablePaís.de.nacimiento: No sería posible responder una de las preguntas observando esta variable, casi el 100% de los casos reportados son de ColombianosProfesión: Demasiados factores para analizar, no sería posible responder una de las preguntas observando esta variableCódigo.DANE: No tiene significadoCantidad: No tiene significadoremovable_columns <- c("Fecha", "Hora", "Barrio", "País.de.nacimiento", "Profesión", "Código.DANE", "Cantidad")
data_hurto_tidy <- data_hurto_raw[, -which(colnames(data_hurto_raw) %in% removable_columns)]
str(data_hurto_tidy)
## 'data.frame': 185105 obs. of 13 variables:
## $ Departamento : Factor w/ 32 levels "AMAZONAS","ANTIOQUIA",..: 2 2 2 2 2 2 2 2 2 2 ...
## $ Municipio : Factor w/ 901 levels "ABEJORRAL","ABREGO",..: 443 443 443 443 443 443 443 443 443 443 ...
## $ Día : Factor w/ 7 levels "Domingo","Jueves",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ Zona : Factor w/ 3 levels "OTRAS","RURAL",..: 3 3 3 3 3 3 3 3 3 3 ...
## $ Clase.de.sitio : Factor w/ 384 levels "-","AEROPUERTO",..: 382 382 382 382 382 382 382 382 382 84 ...
## $ Arma.empleada : Factor w/ 16 levels "-","ALUCINOGENOS",..: 3 3 3 14 4 14 14 14 4 14 ...
## $ Móvil.Agresor : Factor w/ 15 levels "-","A PIE","BICICLETA",..: 2 2 2 6 12 2 2 2 14 2 ...
## $ Móvil.Victima : Factor w/ 15 levels "-","A PIE","BICICLETA",..: 2 2 2 13 13 2 2 2 5 2 ...
## $ Edad : int 39 43 26 29 37 87 30 59 35 28 ...
## $ Sexo : Factor w/ 3 levels "-","FEMENINO",..: 3 3 2 2 3 3 3 3 3 3 ...
## $ Estado.civil : Factor w/ 7 levels "-","CASADO","DIVORCIADO",..: 6 6 5 6 2 2 5 5 6 6 ...
## $ Clase.de.empleado: Factor w/ 36 levels "-","AFRODESCENDIENTE",..: 17 17 17 17 26 30 26 26 26 17 ...
## $ Escolaridad : Factor w/ 8 levels "-","ANALFABETA",..: 5 4 5 5 5 5 5 5 5 5 ...
Normalizamos los nombres de las columnas, removiendo tildes y dejando todos los caracteres en minuscula.
colnames(data_hurto_tidy) <- c("departamento", "municipio", "dia", "zona", "clase_de_sitio", "arma_empleada", "movil_agresor", "movil_victima", "edad", "sexo", "estado_civil", "clase_de_empleado", "escolaridad")
str(data_hurto_tidy)
## 'data.frame': 185105 obs. of 13 variables:
## $ departamento : Factor w/ 32 levels "AMAZONAS","ANTIOQUIA",..: 2 2 2 2 2 2 2 2 2 2 ...
## $ municipio : Factor w/ 901 levels "ABEJORRAL","ABREGO",..: 443 443 443 443 443 443 443 443 443 443 ...
## $ dia : Factor w/ 7 levels "Domingo","Jueves",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ zona : Factor w/ 3 levels "OTRAS","RURAL",..: 3 3 3 3 3 3 3 3 3 3 ...
## $ clase_de_sitio : Factor w/ 384 levels "-","AEROPUERTO",..: 382 382 382 382 382 382 382 382 382 84 ...
## $ arma_empleada : Factor w/ 16 levels "-","ALUCINOGENOS",..: 3 3 3 14 4 14 14 14 4 14 ...
## $ movil_agresor : Factor w/ 15 levels "-","A PIE","BICICLETA",..: 2 2 2 6 12 2 2 2 14 2 ...
## $ movil_victima : Factor w/ 15 levels "-","A PIE","BICICLETA",..: 2 2 2 13 13 2 2 2 5 2 ...
## $ edad : int 39 43 26 29 37 87 30 59 35 28 ...
## $ sexo : Factor w/ 3 levels "-","FEMENINO",..: 3 3 2 2 3 3 3 3 3 3 ...
## $ estado_civil : Factor w/ 7 levels "-","CASADO","DIVORCIADO",..: 6 6 5 6 2 2 5 5 6 6 ...
## $ clase_de_empleado: Factor w/ 36 levels "-","AFRODESCENDIENTE",..: 17 17 17 17 26 30 26 26 26 17 ...
## $ escolaridad : Factor w/ 8 levels "-","ANALFABETA",..: 5 4 5 5 5 5 5 5 5 5 ...
Se elimina (CT) de los datos en la columna Municipio, que significa que el municipio es la capital de su departamento, estos caracteres dificultan hacer el join con otros datasets.
remove_capital <- function(city_factor) {
city <- as.character(city_factor)
no_capital <- gsub(" \\(CT\\)", "", city)
return(no_capital)
}
data_hurto_tidy$municipio <- as.factor(sapply(data_hurto_tidy$municipio, remove_capital))
str(data_hurto_tidy)
## 'data.frame': 185105 obs. of 13 variables:
## $ departamento : Factor w/ 32 levels "AMAZONAS","ANTIOQUIA",..: 2 2 2 2 2 2 2 2 2 2 ...
## $ municipio : Factor w/ 899 levels "ABEJORRAL","ABREGO",..: 442 442 442 442 442 442 442 442 442 442 ...
## $ dia : Factor w/ 7 levels "Domingo","Jueves",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ zona : Factor w/ 3 levels "OTRAS","RURAL",..: 3 3 3 3 3 3 3 3 3 3 ...
## $ clase_de_sitio : Factor w/ 384 levels "-","AEROPUERTO",..: 382 382 382 382 382 382 382 382 382 84 ...
## $ arma_empleada : Factor w/ 16 levels "-","ALUCINOGENOS",..: 3 3 3 14 4 14 14 14 4 14 ...
## $ movil_agresor : Factor w/ 15 levels "-","A PIE","BICICLETA",..: 2 2 2 6 12 2 2 2 14 2 ...
## $ movil_victima : Factor w/ 15 levels "-","A PIE","BICICLETA",..: 2 2 2 13 13 2 2 2 5 2 ...
## $ edad : int 39 43 26 29 37 87 30 59 35 28 ...
## $ sexo : Factor w/ 3 levels "-","FEMENINO",..: 3 3 2 2 3 3 3 3 3 3 ...
## $ estado_civil : Factor w/ 7 levels "-","CASADO","DIVORCIADO",..: 6 6 5 6 2 2 5 5 6 6 ...
## $ clase_de_empleado: Factor w/ 36 levels "-","AFRODESCENDIENTE",..: 17 17 17 17 26 30 26 26 26 17 ...
## $ escolaridad : Factor w/ 8 levels "-","ANALFABETA",..: 5 4 5 5 5 5 5 5 5 5 ...
Se cambian todos los - por NA y se eliminan las observaciones con por lo menos un NA.
which(names(summary(data_hurto_tidy$clase_de_sitio)) == "-")
## integer(0)
data_hurto <- data_hurto_tidy
data_hurto[data_hurto_tidy == "-"] <- NA
data_hurto <- data_hurto[complete.cases(data_hurto), ]
str(data_hurto)
## 'data.frame': 182418 obs. of 13 variables:
## $ departamento : Factor w/ 32 levels "AMAZONAS","ANTIOQUIA",..: 2 2 2 2 2 2 2 2 2 2 ...
## $ municipio : Factor w/ 899 levels "ABEJORRAL","ABREGO",..: 442 442 442 442 442 442 442 442 442 442 ...
## $ dia : Factor w/ 7 levels "Domingo","Jueves",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ zona : Factor w/ 3 levels "OTRAS","RURAL",..: 3 3 3 3 3 3 3 3 3 3 ...
## $ clase_de_sitio : Factor w/ 384 levels "-","AEROPUERTO",..: 382 382 382 382 382 382 382 382 382 84 ...
## $ arma_empleada : Factor w/ 16 levels "-","ALUCINOGENOS",..: 3 3 3 14 4 14 14 14 4 14 ...
## $ movil_agresor : Factor w/ 15 levels "-","A PIE","BICICLETA",..: 2 2 2 6 12 2 2 2 14 2 ...
## $ movil_victima : Factor w/ 15 levels "-","A PIE","BICICLETA",..: 2 2 2 13 13 2 2 2 5 2 ...
## $ edad : int 39 43 26 29 37 87 30 59 35 28 ...
## $ sexo : Factor w/ 3 levels "-","FEMENINO",..: 3 3 2 2 3 3 3 3 3 3 ...
## $ estado_civil : Factor w/ 7 levels "-","CASADO","DIVORCIADO",..: 6 6 5 6 2 2 5 5 6 6 ...
## $ clase_de_empleado: Factor w/ 36 levels "-","AFRODESCENDIENTE",..: 17 17 17 17 26 30 26 26 26 17 ...
## $ escolaridad : Factor w/ 8 levels "-","ANALFABETA",..: 5 4 5 5 5 5 5 5 5 5 ...
Se cambia el orden de los factores de escolaridad y dia.
data_hurto$escolaridad <- factor(data_hurto$escolaridad, levels = c("NO REPORTADO", "ANALFABETA", "PRIMARIA", "SECUNDARIA", "TECNOLOGO", "TECNICO", "SUPERIOR"))
data_hurto$dia <- factor(data_hurto$dia, levels = c("Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"))
head(data_hurto)
## departamento municipio dia zona clase_de_sitio
## 1 ANTIOQUIA MEDELLÍN Domingo URBANA VIAS PUBLICAS
## 2 ANTIOQUIA MEDELLÍN Domingo URBANA VIAS PUBLICAS
## 3 ANTIOQUIA MEDELLÍN Domingo URBANA VIAS PUBLICAS
## 4 ANTIOQUIA MEDELLÍN Domingo URBANA VIAS PUBLICAS
## 5 ANTIOQUIA MEDELLÍN Domingo URBANA VIAS PUBLICAS
## 6 ANTIOQUIA MEDELLÍN Domingo URBANA VIAS PUBLICAS
## arma_empleada movil_agresor movil_victima edad
## 1 ARMA BLANCA / CORTOPUNZANTE A PIE A PIE 39
## 2 ARMA BLANCA / CORTOPUNZANTE A PIE A PIE 43
## 3 ARMA BLANCA / CORTOPUNZANTE A PIE A PIE 26
## 4 SIN EMPLEO DE ARMAS CONDUCTOR TAXI PASAJERO TAXI 29
## 5 ARMA DE FUEGO PASAJERO MOTOCICLETA PASAJERO TAXI 37
## 6 SIN EMPLEO DE ARMAS A PIE A PIE 87
## sexo estado_civil clase_de_empleado escolaridad
## 1 MASCULINO UNION LIBRE EMPLEADO PARTICULAR SECUNDARIA
## 2 MASCULINO UNION LIBRE EMPLEADO PARTICULAR PRIMARIA
## 3 FEMENINO SOLTERO EMPLEADO PARTICULAR SECUNDARIA
## 4 FEMENINO UNION LIBRE EMPLEADO PARTICULAR SECUNDARIA
## 5 MASCULINO CASADO INDEPENDIENTE SECUNDARIA
## 6 MASCULINO CASADO PENSIONADO SECUNDARIA
Dejamos:
MPIO que es el nombre del municipioX2017 que es la poblacion por municipio en 2017target_columns <- c("MPIO", "X2017")
data_municipios_tidy <- data_municipios_raw[, which(colnames(data_municipios_raw) %in% target_columns)]
str(data_municipios_tidy)
## 'data.frame': 1123 obs. of 2 variables:
## $ MPIO : Factor w/ 1041 levels "Abejorral","Abrego",..: 519 1 3 20 30 31 36 37 38 40 ...
## $ X2017: Factor w/ 1100 levels "1,024,882","1,066",..: 378 327 349 561 542 443 762 1057 79 289 ...
Normalizamos el nombre de cada columna, dejandolos en minuscula y sin tildes.
colnames(data_municipios_tidy) <- c("municipio", "poblacion_2017")
str(data_municipios_tidy)
## 'data.frame': 1123 obs. of 2 variables:
## $ municipio : Factor w/ 1041 levels "Abejorral","Abrego",..: 519 1 3 20 30 31 36 37 38 40 ...
## $ poblacion_2017: Factor w/ 1100 levels "1,024,882","1,066",..: 378 327 349 561 542 443 762 1057 79 289 ...
Convertimos la columna poblacion_2017 de factor a numerica.
factor_to_int <- function(a_factor) {
a_char <- as.character(a_factor)
no_commas <- gsub(",", "", a_char)
num <- as.integer(no_commas)
return(num)
}
data_municipios_tidy$poblacion_2017 <- sapply(data_municipios_tidy$poblacion_2017, factor_to_int)
data_municipios_tidy$municipio <- sapply(data_municipios_tidy$municipio, toupper)
str(data_municipios_tidy)
## 'data.frame': 1123 obs. of 2 variables:
## $ municipio : chr "MEDELLÍN" "ABEJORRAL" "ABRIAQUÍ" "ALEJANDRÍA" ...
## $ poblacion_2017: int 2508452 19096 2019 3393 29980 22414 46621 9216 11139 17521 ...
Eliminamos la fila que tiene el total nacional, no interesa para el analisis.
data_municipios_tidy <- data_municipios_tidy[data_municipios_tidy$municipio != "TOTAL NACIONAL", ]
str(data_municipios_tidy)
## 'data.frame': 1122 obs. of 2 variables:
## $ municipio : chr "MEDELLÍN" "ABEJORRAL" "ABRIAQUÍ" "ALEJANDRÍA" ...
## $ poblacion_2017: int 2508452 19096 2019 3393 29980 22414 46621 9216 11139 17521 ...
Se elimina la coma de BOGOTA, D.C, pues dificulta hacer el join con otro dataset.
bogota_row <- data_municipios_tidy[data_municipios_tidy$municipio == "BOGOTÁ, D.C.", ]
bogota_row$municipio <- c("BOGOTÁ D.C.")
data_municipios_tidy[data_municipios_tidy$municipio == "BOGOTÁ, D.C.", ] <- bogota_row
data_municipios <- data_municipios_tidy
Eliminamos la columna CÓDIGO_ETC, pues no interesa para el analisis.
data_educacion_tidy <- data_educacion_raw
data_educacion_tidy <- data_educacion_tidy[, -which(colnames(data_educacion_tidy) == "CÓDIGO_ETC")]
str(data_educacion_tidy)
## 'data.frame': 661 obs. of 36 variables:
## $ AÑO : int 2012 2013 2011 2014 2017 2015 2016 2014 2011 2013 ...
## $ ETC : Factor w/ 95 levels "Amazonas (ETC)",..: 1 1 1 1 1 1 1 2 2 2 ...
## $ POBLACIÓN_5_16 : int 22194 22123 22223 22167 22269 22212 22243 586947 599438 590211 ...
## $ TASA_MATRICULACIÓN_5_16 : num 8.19e+14 8.18e+01 8.23e+01 8.21e+01 8.36e+01 ...
## $ COBERTURA_NETA : num 81.9 81.8 82.3 82.1 82.1 ...
## $ COBERTURA_NETA_TRANSICIÓN : num 60.2 48.4 63.7 43.9 49 ...
## $ COBERTURA_NETA_PRIMARIA : num 85.6 84 87.2 84.9 80.6 ...
## $ COBERTURA_NETA_SECUNDARIA : num 53.3 58.2 50.6 57.7 60.7 ...
## $ COBERTURA_NETA_MEDIA : num 22.3 22.1 21.9 23.1 30.1 ...
## $ COBERTURA_BRUTA : num 94.8 95.4 94.5 95.7 96.6 ...
## $ COBERTURA_BRUTA_TRANSICIÓN : num 60.2 96.9 94.5 89.5 92.6 ...
## $ COBERTURA_BRUTA_PRIMARIA : num 85.6 111.8 117.8 114 108 ...
## $ COBERTURA_BRUTA_SECUNDARIA : num 53.3 91.2 82.5 89.1 94.3 ...
## $ COBERTURA_BRUTA_MEDIA : num 22.3 59.6 58 63.3 72.2 ...
## $ TAMAÑO_PROMEDIO_DE_GRUPO : num 19.3 27.6 14.9 20.3 21 ...
## $ SEDES_CONECTADAS_A_INTERNET: num 20.9 12.8 36.4 16.5 16.5 ...
## $ DESERCIÓN : num 4.7 3.29 5.46 3.04 4.88 4.76 5.06 2.68 4.16 3.84 ...
## $ DESERCIÓN_TRANSICIÓN : num 5.16 3.16 5.56 2.97 6.38 4.54 5.23 2.4 3.89 3.36 ...
## $ DESERCIÓN_PRIMARIA : num 2.3 1.82 3.67 1.95 3.06 2.53 2.75 2.26 3.93 3.27 ...
## $ DESERCIÓN_SECUNDARIA : num 7.97 5.26 8.21 4.67 6.98 8 8.49 3.55 4.71 5.03 ...
## $ DESERCIÓN_MEDIA : num 8.06 5.57 7.9 4.35 6.23 6.69 5.96 2.23 3.87 3.28 ...
## $ APROBACIÓN : num 93.7 95.8 91.2 96.9 87.5 ...
## $ APROBACIÓN_TRANSICIÓN : num 94.8 96.8 94.3 97 92.7 ...
## $ APROBACIÓN_PRIMARIA : num 95.8 97 92.8 98 90 ...
## $ APROBACIÓN_SECUNDARIA : num 90.7 94.2 88.6 95.3 82 ...
## $ APROBACIÓN_MEDIA : num 90 92.3 85.2 95.7 86.6 ...
## $ REPROBACIÓN : num 1.56 0.93 3.38 0.03 7.67 6.01 5.83 1.02 3.67 5.01 ...
## $ REPROBACIÓN_TRANSICIÓN : num 0 0 0.17 0 0.91 0.27 0.32 0.06 0.13 0.17 ...
## $ REPROBACIÓN_PRIMARIA : num 1.92 1.13 3.5 0.03 6.91 6.92 5.97 0.84 3.2 4.74 ...
## $ REPROBACIÓN_SECUNDARIA : num 1.35 0.56 3.16 0.05 11.01 ...
## $ REPROBACIÓN_MEDIA : num 1.98 2.12 6.95 0 7.19 4.79 5.79 1.44 5.69 6.06 ...
## $ REPITENCIA : num 3.9 4.32 1.65 6.3 5.96 5.15 6.61 1.87 2.02 1.7 ...
## $ REPITENCIA_TRANSICIÓN : num 0.67 2.46 0.65 2.77 3.3 1.36 1.66 0.19 0.15 0.19 ...
## $ REPITENCIA_PRIMARIA : num 3.32 4.41 2.02 6.83 7.06 5.14 7.5 1.77 1.94 1.59 ...
## $ REPITENCIA_SECUNDARIA : num 6.17 5.16 1.39 7.25 6.05 6.39 7.17 2.69 2.89 2.44 ...
## $ REPITENCIA_MEDIA : num 3.39 2.58 1.34 3.17 2.42 4.15 4.14 1.09 1.24 1.19 ...
Normalizamos los nombres de las columnas, llevandolas a minuscula.
colnames(data_educacion_tidy) <- sapply(colnames(data_educacion_tidy), tolower)
Conservamos solo el año 2017 y posteriormente eliminamos la columna.
data_educacion_tidy <- data_educacion_tidy[data_educacion_tidy$año == 2017, ]
data_educacion_tidy <- data_educacion_tidy[, -which(colnames(data_educacion_tidy) == "año")]
str(data_educacion_tidy)
## 'data.frame': 95 obs. of 35 variables:
## $ etc : Factor w/ 95 levels "Amazonas (ETC)",..: 1 2 3 4 5 6 7 8 9 10 ...
## $ población_5_16 : int 22269 588225 49431 75197 15106 54421 112847 37581 237521 93422 ...
## $ tasa_matriculación_5_16 : num 83.6 82.4 59 75 67.8 ...
## $ cobertura_neta : num 82.1 82.3 59 75 67.6 ...
## $ cobertura_neta_transición : num 49 51.2 33 47.3 51.2 ...
## $ cobertura_neta_primaria : num 80.6 79.7 55.6 74 67.8 ...
## $ cobertura_neta_secundaria : num 60.7 68.3 52.2 58.4 59.7 ...
## $ cobertura_neta_media : num 30.1 36.7 26.6 30.9 37.8 ...
## $ cobertura_bruta : num 96.6 93.4 71.1 86.6 72.4 ...
## $ cobertura_bruta_transición : num 92.6 71.9 51.3 83.2 67.1 ...
## $ cobertura_bruta_primaria : num 108 102 72.4 97 77.7 ...
## $ cobertura_bruta_secundaria : num 94.3 99.7 82.9 85.6 75.6 ...
## $ cobertura_bruta_media : num 72.2 69.5 55.3 62.2 55.6 ...
## $ tamaño_promedio_de_grupo : num 21 29.5 35.8 21.8 27.4 ...
## $ sedes_conectadas_a_internet: num 16.5 22.8 46.9 35.8 79.2 ...
## $ deserción : num 4.88 4.9 4.99 3.63 1.15 4.41 1.59 2 1.14 3.06 ...
## $ deserción_transición : num 6.38 4.11 3.3 3.9 0.75 4.53 2.37 2.96 1.84 2.94 ...
## $ deserción_primaria : num 3.06 3.87 3.52 3.28 1.29 3.02 1.51 1.54 1.05 2.71 ...
## $ deserción_secundaria : num 6.98 6.76 7.65 4.23 1.13 5.91 1.63 2.38 1.21 3.82 ...
## $ deserción_media : num 6.23 4.19 3.88 3.21 0.9 4.3 1.31 1.94 0.86 2.14 ...
## $ aprobación : num 87.5 90 85 96.3 97.9 ...
## $ aprobación_transición : num 92.7 95.7 96.1 96.1 99.2 ...
## $ aprobación_primaria : num 90 91.3 88.1 96.7 98.1 ...
## $ aprobación_secundaria : num 82 86.5 77.4 95.8 97 ...
## $ aprobación_media : num 86.6 91 88.7 96.1 98.6 ...
## $ reprobación : num 7.67 5.12 10.02 0.07 0.97 ...
## $ reprobación_transición : num 0.91 0.16 0.62 NA NA 0.25 0.29 0.98 1.84 0.36 ...
## $ reprobación_primaria : num 6.91 4.8 8.41 NA 0.62 4.47 5.9 7.18 3.39 0.83 ...
## $ reprobación_secundaria : num 11.01 6.72 14.94 NA 1.82 ...
## $ reprobación_media : num 7.19 4.8 7.39 0.73 0.5 6.31 4.08 9.65 2.75 0.83 ...
## $ repitencia : num 5.96 5.44 0.61 7.17 2.04 0.74 1.4 5.27 1.28 1.45 ...
## $ repitencia_transición : num 3.3 1.26 0.1 5.85 1.34 0.04 0.53 1.35 1.36 0.25 ...
## $ repitencia_primaria : num 7.06 6.1 0.4 6.85 1.22 0.53 1.59 3.62 1.42 1.48 ...
## $ repitencia_secundaria : num 6.05 6.38 1.1 9.05 3.75 1.24 1.67 8.86 1.44 1.96 ...
## $ repitencia_media : num 2.42 1.96 0.26 3.68 0.8 0.35 0.53 3.64 0.35 0.41 ...
Transformamos las ETC en mayuscula y removemos el (ETC), lo cual dificulta el join con otro dataset.
remove_etc <- function(city_factor) {
city <- as.character(city_factor)
no_capital <- gsub(" \\(ETC\\)", "", city)
return(no_capital)
}
data_educacion_tidy$etc <- sapply(data_educacion_tidy$etc, toupper)
data_educacion_tidy$etc <- sapply(data_educacion_tidy$etc, remove_etc)
data_educacion_tidy$etc <- sapply(data_educacion_tidy$etc, remove_capital)
data_educacion <- data_educacion_tidy
Este data set cuenta con las siguientes variables que representan códigos de numeración o tienen solo un valor asignado, de manera que se pasan a eliminar:
Fecha: No se pretende realizar analisis de hurtos reportados en el tiempoHora: No se pretende realizar analisis de hurtos reportados en el tiempoPermiso: Demasiados factores para analizar, no sería posible responder una de las preguntas observando esta variableCódigo.DANE: No tiene significadoCantidad: No tiene significadoremovable_columns_2 <- c("FECHA", "HORA", "PERMISO", "CÓDIGO.DANE", "CANTIDAD")
data_incauta_tidy <- data_incauta_raw[, -which(colnames(data_incauta_raw) %in% removable_columns_2)]
str(data_incauta_tidy)
## 'data.frame': 20508 obs. of 6 variables:
## $ DEPARTAMENTO : Factor w/ 32 levels "AMAZONAS","ANTIOQUIA",..: 1 2 2 2 2 5 5 5 5 5 ...
## $ MUNICIPIO : Factor w/ 978 levels "ABEJORRAL","ABREGO",..: 447 38 310 766 827 511 511 511 511 511 ...
## $ DÍA : Factor w/ 7 levels "Domingo","Jueves",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ CLASE.DE.ARMA : Factor w/ 11 levels "AMETRALLADORA",..: 10 10 10 9 3 2 5 7 9 10 ...
## $ ZONA : Factor w/ 2 levels "RURAL","URBANA": 1 2 1 1 1 1 1 1 1 1 ...
## $ CLASE.DE.SITIO: Factor w/ 128 levels "AEROPUERTO","ALCALDIA",..: 127 127 127 50 50 128 128 128 128 128 ...
Por último, se pasa a normalizar los nombres de las columnas para acciones de preprocesamiento.
colnames(data_incauta_tidy) <- c("departamento", "municipio", "dia", "clase_de_arma", "zona", "clase_de_sitio")
str(data_incauta_tidy)
## 'data.frame': 20508 obs. of 6 variables:
## $ departamento : Factor w/ 32 levels "AMAZONAS","ANTIOQUIA",..: 1 2 2 2 2 5 5 5 5 5 ...
## $ municipio : Factor w/ 978 levels "ABEJORRAL","ABREGO",..: 447 38 310 766 827 511 511 511 511 511 ...
## $ dia : Factor w/ 7 levels "Domingo","Jueves",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ clase_de_arma : Factor w/ 11 levels "AMETRALLADORA",..: 10 10 10 9 3 2 5 7 9 10 ...
## $ zona : Factor w/ 2 levels "RURAL","URBANA": 1 2 1 1 1 1 1 1 1 1 ...
## $ clase_de_sitio: Factor w/ 128 levels "AEROPUERTO","ALCALDIA",..: 127 127 127 50 50 128 128 128 128 128 ...
Calculamos indice de hurtos por municipio (por cada 1000 personas), dividiendo la cantidad de hurtos reportados / población del municipio.
hurtos_per_muni <- data_hurto %>%
group_by(municipio) %>%
summarize(
cantidad_hurtos = n()
)
muni_joined <- data_municipios %>%
left_join(hurtos_per_muni, by = c("municipio" = "municipio"), copy = TRUE)
## Warning: Column `municipio` joining character vector and factor, coercing
## into character vector
attach(muni_joined)
muni_joined$indice_hurtos <- (cantidad_hurtos / poblacion_2017) * 1000
detach(muni_joined)
muni_joined_sorted <- muni_joined[order(-muni_joined$poblacion_2017), ]
sum(is.na(muni_joined$cantidad_hurtos))
## [1] 155
Visualizamos los 30 primeros municipios en indice de hurtos.
muni_top <- head(muni_joined_sorted, 30)
muni_top_sorted <- muni_top[order(-muni_top$indice_hurtos), ]
muni_top_sorted
## municipio poblacion_2017 cantidad_hurtos indice_hurtos
## 716 PASTO 450645 4460 9.8969255
## 362 POPAYÁN 282453 2342 8.2916450
## 149 BOGOTÁ D.C. 8080734 64188 7.9433378
## 846 BUCARAMANGA 528497 4068 7.6973001
## 1 MEDELLÍN 2508452 17522 6.9851845
## 687 VILLAVICENCIO 506012 3514 6.9444993
## 605 NEIVA 345806 2296 6.6395609
## 1006 CALI 2420114 14681 6.0662432
## 832 PEREIRA 474335 2701 5.6942878
## 959 IBAGUÉ 564076 3010 5.3361604
## 820 ARMENIA 299712 1518 5.0648623
## 47 ENVIGADO 232903 1177 5.0536060
## 319 MANIZALES 398830 1883 4.7213098
## 933 SINCELEJO 282868 1327 4.6912341
## 657 SANTA MARTA 499391 2329 4.6636804
## 126 BARRANQUILLA 1228271 5585 4.5470421
## 878 FLORIDABLANCA 266617 1211 4.5420960
## 59 ITAGUI 273927 1164 4.2493073
## 1032 PALMIRA 308669 1140 3.6932766
## 780 CÚCUTA 662673 2267 3.4209935
## 19 BELLO 473423 1594 3.3669678
## 404 VALLEDUPAR 473251 1554 3.2836698
## 429 MONTERÍA 453931 1437 3.1656794
## 545 SOACHA 533718 1309 2.4526061
## 642 RIOHACHA 277868 625 2.2492694
## 1041 TULUÁ 216619 470 2.1697081
## 150 CARTAGENA 1024882 1954 1.9065610
## 145 SOLEDAD 649111 1079 1.6622735
## 1012 BUENAVENTURA 415770 637 1.5320971
## 777 SAN ANDRES DE TUMACO 208318 108 0.5184382
Añadimos la información del dataset de educación.
edu_joined <- muni_joined %>%
left_join(data_educacion, by = c("municipio" = "etc"), copy = TRUE)
str(edu_joined)
## 'data.frame': 1122 obs. of 38 variables:
## $ municipio : chr "MEDELLÍN" "ABEJORRAL" "ABRIAQUÍ" "ALEJANDRÍA" ...
## $ poblacion_2017 : int 2508452 19096 2019 3393 29980 22414 46621 9216 11139 17521 ...
## $ cantidad_hurtos : int 17522 16 2 1 28 27 33 6 2 17 ...
## $ indice_hurtos : num 6.985 0.838 0.991 0.295 0.934 ...
## $ población_5_16 : int 370202 NA NA NA NA NA NA NA NA NA ...
## $ tasa_matriculación_5_16 : num 101 NA NA NA NA ...
## $ cobertura_neta : num 101 NA NA NA NA ...
## $ cobertura_neta_transición : num 73.1 NA NA NA NA ...
## $ cobertura_neta_primaria : num 98.6 NA NA NA NA ...
## $ cobertura_neta_secundaria : num 89.9 NA NA NA NA ...
## $ cobertura_neta_media : num 54.9 NA NA NA NA ...
## $ cobertura_bruta : num 116 NA NA NA NA ...
## $ cobertura_bruta_transición : num 88.5 NA NA NA NA ...
## $ cobertura_bruta_primaria : num 114 NA NA NA NA ...
## $ cobertura_bruta_secundaria : num 130 NA NA NA NA ...
## $ cobertura_bruta_media : num 108 NA NA NA NA ...
## $ tamaño_promedio_de_grupo : num 34 NA NA NA NA ...
## $ sedes_conectadas_a_internet: num 98.3 NA NA NA NA ...
## $ deserción : num 3.46 NA NA NA NA NA NA NA NA NA ...
## $ deserción_transición : num 3.05 NA NA NA NA NA NA NA NA NA ...
## $ deserción_primaria : num 2.71 NA NA NA NA NA NA NA NA NA ...
## $ deserción_secundaria : num 4.68 NA NA NA NA NA NA NA NA NA ...
## $ deserción_media : num 2.8 NA NA NA NA NA NA NA NA NA ...
## $ aprobación : num 85.3 NA NA NA NA ...
## $ aprobación_transición : num 96.8 NA NA NA NA NA NA NA NA NA ...
## $ aprobación_primaria : num 88.6 NA NA NA NA ...
## $ aprobación_secundaria : num 77.8 NA NA NA NA ...
## $ aprobación_media : num 89.6 NA NA NA NA ...
## $ reprobación : num 11.2 NA NA NA NA ...
## $ reprobación_transición : num 0.15 NA NA NA NA NA NA NA NA NA ...
## $ reprobación_primaria : num 8.7 NA NA NA NA NA NA NA NA NA ...
## $ reprobación_secundaria : num 17.5 NA NA NA NA ...
## $ reprobación_media : num 7.57 NA NA NA NA NA NA NA NA NA ...
## $ repitencia : num 10.2 NA NA NA NA ...
## $ repitencia_transición : num 1.37 NA NA NA NA NA NA NA NA NA ...
## $ repitencia_primaria : num 8.96 NA NA NA NA NA NA NA NA NA ...
## $ repitencia_secundaria : num 15 NA NA NA NA ...
## $ repitencia_media : num 4.83 NA NA NA NA NA NA NA NA NA ...
Removemos las filas con NA y con indice de hurto mayor a 10.
edu_joined <- edu_joined[complete.cases(edu_joined), ] %>% filter(indice_hurtos <= 10)
str(edu_joined)
## 'data.frame': 59 obs. of 38 variables:
## $ municipio : chr "MEDELLÍN" "BELLO" "CALDAS" "NARIÑO" ...
## $ poblacion_2017 : int 2508452 473423 79652 17686 124219 1228271 649111 1024882 12342 123906 ...
## $ cantidad_hurtos : int 17522 1594 141 9 654 5585 1079 1954 14 160 ...
## $ indice_hurtos : num 6.985 3.367 1.77 0.509 5.265 ...
## $ población_5_16 : int 370202 93422 125643 223685 24795 237521 140244 210840 267545 28640 ...
## $ tasa_matriculación_5_16 : num 101.3 78.5 73.6 63.5 82.8 ...
## $ cobertura_neta : num 101.2 78.5 73.5 63.5 82.5 ...
## $ cobertura_neta_transición : num 73.1 53.4 48.6 33 57 ...
## $ cobertura_neta_primaria : num 98.6 77.2 67.7 59.3 76.6 ...
## $ cobertura_neta_secundaria : num 89.9 67.3 65.1 50.5 74 ...
## $ cobertura_neta_media : num 54.9 38.3 40.5 25.5 46.3 ...
## $ cobertura_bruta : num 116.3 89.8 84.3 76.2 94 ...
## $ cobertura_bruta_transición : num 88.5 65.6 61.1 60.1 70.9 ...
## $ cobertura_bruta_primaria : num 114 91.3 84.8 85.4 90.2 ...
## $ cobertura_bruta_secundaria : num 130.2 101.8 93.4 78.9 106.5 ...
## $ cobertura_bruta_media : num 107.6 74.4 75.9 56.1 89.3 ...
## $ tamaño_promedio_de_grupo : num 34 34.5 26.5 17 31.1 ...
## $ sedes_conectadas_a_internet: num 98.3 93.7 31.2 21.6 100 ...
## $ deserción : num 3.46 3.06 3.73 1.52 3.92 1.14 1.22 2.77 3.1 3.31 ...
## $ deserción_transición : num 3.05 2.94 3.8 1.18 2.38 1.84 1.9 4.26 2.93 6.62 ...
## $ deserción_primaria : num 2.71 2.71 2.85 1.03 2.41 1.05 1.24 2.33 2.11 2.82 ...
## $ deserción_secundaria : num 4.68 3.82 4.95 2.06 6.06 1.21 1.23 3.1 4.33 3.49 ...
## $ deserción_media : num 2.8 2.14 3.28 2.15 3.38 0.86 0.74 2.51 3.9 2.12 ...
## $ aprobación : num 85.3 96.1 88.6 97.4 80.2 ...
## $ aprobación_transición : num 96.8 96.7 95.8 98.3 97 ...
## $ aprobación_primaria : num 88.6 96.5 91 97.9 86.1 ...
## $ aprobación_secundaria : num 77.8 95.3 83.8 96.7 69.3 ...
## $ aprobación_media : num 89.6 97 90.4 97.1 85 ...
## $ reprobación : num 11.23 0.84 7.64 1.06 15.87 ...
## $ reprobación_transición : num 0.15 0.36 0.37 0.48 0.62 1.84 0.77 0.41 0.12 0.52 ...
## $ reprobación_primaria : num 8.7 0.83 6.14 1.11 11.53 ...
## $ reprobación_secundaria : num 17.51 0.92 11.23 1.21 24.61 ...
## $ reprobación_media : num 7.57 0.83 6.36 0.73 11.64 ...
## $ repitencia : num 10.16 1.45 2.08 2.61 11.91 ...
## $ repitencia_transición : num 1.37 0.25 0.28 0.9 1.76 1.36 0.47 7.78 1.91 3.05 ...
## $ repitencia_primaria : num 8.96 1.48 1.64 2.3 9.87 1.42 0.35 7.35 2.98 3.4 ...
## $ repitencia_secundaria : num 14.98 1.96 3.32 3.75 17.17 ...
## $ repitencia_media : num 4.83 0.41 0.98 1.46 7.9 0.35 0.2 3.82 1.63 1.86 ...
columns_f <- c("edad", "escolaridad", "dia", "municipio", "movil_agresor", "clase_de_empleado", "estado_civil")
data_hurto_f <- data_hurto[, colnames(data_hurto) %in% columns_f]
summary(data_hurto_f)
## municipio dia movil_agresor
## BOGOTÁ D.C. :64188 Domingo :19820 A PIE :130512
## MEDELLÍN :17522 Lunes :23454 PASAJERO MOTOCICLETA : 20200
## CALI :14681 Martes :27086 CONDUCTOR MOTOCICLETA: 13051
## BARRANQUILLA: 5585 Miércoles:27433 PASAJERO BUS : 7516
## PASTO : 4460 Jueves :27603 BICICLETA : 4533
## BUCARAMANGA : 4068 Viernes :28914 CONDUCTOR VEHICULO : 1773
## (Other) :71914 Sábado :28108 (Other) : 4833
## edad estado_civil clase_de_empleado
## Min. : 0.00 - : 0 EMPLEADO PARTICULAR:105331
## 1st Qu.: 25.00 CASADO :37575 INDEPENDIENTE : 31676
## Median : 33.00 DIVORCIADO : 3041 ESTUDIANTE : 14312
## Mean : 35.17 SEPARADO : 2605 AMA DE CASA : 6852
## 3rd Qu.: 43.00 SOLTERO :96804 COMERCIANTE : 6747
## Max. :450.00 UNION LIBRE:40385 EMPLEADO PUBLICO : 3644
## VIUDO : 2008 (Other) : 13856
## escolaridad
## NO REPORTADO: 1246
## ANALFABETA : 237
## PRIMARIA :26578
## SECUNDARIA :85978
## TECNOLOGO : 5948
## TECNICO :14530
## SUPERIOR :47901
columns_f_l <- c("municipio", "departamento", "zona", "dia", "clase_de_sitio", "arma_empleada", "movil_victima", "sexo")
data_hurto_f_l <- data_hurto[, colnames(data_hurto) %in% columns_f_l]
summary(data_hurto_f_l)
## departamento municipio dia
## CUNDINAMARCA:68946 BOGOTÁ D.C. :64188 Domingo :19820
## ANTIOQUIA :25853 MEDELLÍN :17522 Lunes :23454
## VALLE :19662 CALI :14681 Martes :27086
## SANTANDER : 8242 BARRANQUILLA: 5585 Miércoles:27433
## ATLÁNTICO : 7220 PASTO : 4460 Jueves :27603
## NARIÑO : 5610 BUCARAMANGA : 4068 Viernes :28914
## (Other) :46885 (Other) :71914 Sábado :28108
## zona clase_de_sitio
## OTRAS : 11 VIAS PUBLICAS :108706
## RURAL : 9534 CASAS DE HABITACION : 5522
## URBANA:172873 FRENTE A RESIDENCIAS - VIA PUBLICA: 3064
## CARRETERA : 2595
## LOCAL COMERCIAL : 2523
## CALLEJÓN : 2435
## (Other) : 57573
## arma_empleada movil_victima
## SIN EMPLEO DE ARMAS :87924 A PIE :141171
## ARMA BLANCA / CORTOPUNZANTE:43135 CONDUCTOR VEHICULO : 12248
## ARMA DE FUEGO :35329 PASAJERO BUS : 10134
## CONTUNDENTES :13833 CONDUCTOR MOTOCICLETA: 6384
## ESCOPOLAMINA : 1862 BICICLETA : 4262
## NO REPORTADO : 160 PASAJERO VEHICULO : 1993
## (Other) : 175 (Other) : 6226
## sexo
## - : 0
## FEMENINO : 77497
## MASCULINO:104921
##
##
##
##
Se utilizara la siguiente funcion para graficar los factores del data set.
plot_factor <- function(data, column, top = 30) {
group_count <- data %>%
group_by_(column) %>%
summarise(
cantidad_hurtos = n()
) %>%
arrange(desc(cantidad_hurtos)) %>%
top_n(top)
ggplot(group_count) +
geom_bar(
aes_string(x = paste0("reorder(", column, ", cantidad_hurtos)"), y = "cantidad_hurtos"),
stat = "identity"
) +
coord_flip() +
labs(x = column, y = "Cantidad de hurtos reportados") +
theme(axis.text.y = element_text(size = (rel(0.8))))
}
plot_factor(data_hurto_f, "municipio", 20)
## Selecting by cantidad_hurtos
plot_factor(data_hurto_f, "dia")
## Selecting by cantidad_hurtos
plot_factor(data_hurto_f, "movil_agresor", 20)
## Selecting by cantidad_hurtos
plot_factor(data_hurto_f, "estado_civil")
## Selecting by cantidad_hurtos
plot_factor(data_hurto_f, "clase_de_empleado", 20)
## Selecting by cantidad_hurtos
plot_factor(data_hurto_f, "escolaridad")
## Selecting by cantidad_hurtos
edad_count <- data_hurto_f %>%
group_by(edad) %>%
summarise(
cantidad_hurtos = n()
)
ggplot(edad_count) +
geom_point(aes(x = edad, y = cantidad_hurtos))
Existen unos datos atipicos de edades mayores a 100, los eliminamos par visualizar la distribucion resultante.
edad_count_fix <- edad_count %>%
filter(edad < 100)
ggplot(edad_count_fix) +
geom_point(aes(x = edad, y = cantidad_hurtos))
plot_factor(data_hurto_f_l, "municipio", 20)
## Selecting by cantidad_hurtos
plot_factor(data_hurto_f_l, "departamento", 20)
## Selecting by cantidad_hurtos
plot_factor(data_hurto_f_l, "zona", 20)
## Selecting by cantidad_hurtos
plot_factor(data_hurto_f_l, "clase_de_sitio", 20)
## Selecting by cantidad_hurtos
plot_factor(data_hurto_f_l, "arma_empleada", 20)
## Selecting by cantidad_hurtos
plot_factor(data_hurto_f_l, "movil_victima", 20)
## Selecting by cantidad_hurtos
plot_factor(data_hurto_f_l, "sexo", 20)
## Selecting by cantidad_hurtos
ggplot(data_educacion) +
geom_point(aes(x = reorder(etc, población_5_16), y = población_5_16)) +
coord_flip()
ggplot(data_educacion) +
geom_point(aes(x = reorder(etc, tasa_matriculación_5_16), y = tasa_matriculación_5_16)) +
coord_flip()
ggplot(data_educacion) +
geom_point(aes(x = reorder(etc, cobertura_neta), y = cobertura_neta)) +
coord_flip()
ggplot(data_educacion) +
geom_point(aes(x = reorder(etc, cobertura_bruta), y = cobertura_bruta)) +
coord_flip()
ggplot(data_educacion) +
geom_point(aes(x = reorder(etc, tamaño_promedio_de_grupo), y = tamaño_promedio_de_grupo)) +
coord_flip()
ggplot(data_educacion) +
geom_point(aes(x = reorder(etc, sedes_conectadas_a_internet), y = sedes_conectadas_a_internet)) +
coord_flip()
ggplot(data_educacion) +
geom_point(aes(x = reorder(etc, deserción), y = deserción)) +
coord_flip()
ggplot(data_educacion) +
geom_point(aes(x = reorder(etc, aprobación), y = aprobación)) +
coord_flip()
ggplot(data_educacion) +
geom_point(aes(x = reorder(etc, reprobación), y = reprobación)) +
coord_flip()
ggplot(data_educacion) +
geom_point(aes(x = reorder(etc, repitencia), y = repitencia)) +
coord_flip()
Aquí se tiene el analisis univariado para las siguientes variables:
DepartamentoMunicipioDíaClaseZonaClase de sitioA continuación empezamos a analizar cada una de las variables listadas y a observar como está la distribución de estos datos.
data_armas <- data_incauta_tidy
columns_f_l_armas <- c("departamento", "municipio", "dia", "clase_de_arma", "zona", "clase_de_sitio")
data_hurto_f_l_armas <- data_armas[, colnames(data_armas) %in% columns_f_l_armas]
summary(data_hurto_f_l_armas)
## departamento municipio dia
## CUNDINAMARCA :3218 BOGOTÁ D.C. (CT) : 1829 Domingo :3172
## VALLE :1999 BARRANQUILLA (CT): 1066 Jueves :3061
## ANTIOQUIA :1958 CALI (CT) : 1061 Lunes :2876
## ATLÁNTICO :1648 MEDELLÍN (CT) : 563 Martes :2736
## SANTANDER :1488 CÚCUTA (CT) : 403 Miércoles:2802
## NORTE DE SANTANDER:1003 CARTAGENA (CT) : 375 Sábado :2840
## (Other) :9194 (Other) :15211 Viernes :3021
## clase_de_arma zona
## REVOLVER :8695 RURAL : 6150
## ESCOPETA :5503 URBANA:14358
## PISTOLA :4573
## ESCOPETA DE FISTO:1440
## FUSIL / RIFLE : 154
## SUBAMETRALLADORA : 82
## (Other) : 61
## clase_de_sitio
## VIAS PUBLICAS :14030
## FINCAS Y SIMILARES : 1408
## CARRETERA : 1301
## CASAS DE HABITACION : 1014
## TRAMO DE VIA : 672
## INSTALACIONES DE LA POLICIA: 411
## (Other) : 1672
Este bloque de código nos permite crear las visualizaciones para cada uno de los factores analizados. De esta manera logramos minimizar las lineas de código que vamos a tener que usar.
plot_factor <- function(data, column, top = 30) {
group_count <- data %>%
group_by_(column) %>%
summarise(
cantidad_armas = n()
) %>%
arrange(desc(cantidad_armas)) %>%
top_n(top)
ggplot(group_count) +
geom_bar(
aes_string(x = paste0("reorder(", column, ", cantidad_armas)"), y = "cantidad_armas"),
stat = "identity"
) +
coord_flip() +
labs(x = column, y = "Cantidad reportada de armas incautadas") +
theme(axis.text.y = element_text(size = (rel(0.8))))
}
plot_factor(data_hurto_f_l_armas, "departamento", 20)
## Selecting by cantidad_armas
plot_factor(data_hurto_f_l_armas, "municipio", 20)
## Selecting by cantidad_armas
plot_factor(data_hurto_f_l_armas, "dia", 20)
## Selecting by cantidad_armas
plot_factor(data_hurto_f_l_armas, "clase_de_arma", 20)
## Selecting by cantidad_armas
plot_factor(data_hurto_f_l_armas, "zona", 20)
## Selecting by cantidad_armas
plot_factor(data_hurto_f_l_armas, "clase_de_sitio", 20)
## Selecting by cantidad_armas
Se utilizara esta funcion para obtener la moda de un factor de los municipios
get_mode <- function(var) {
uniqv <- unique(var)
uniqv[which.max(tabulate(match(var, uniqv)))]
}
Se obtiene la moda de escolaridad de las victimas de robos en cada municipio, y comparamos esto contra el indice de criminalidad del mismo. Para los rangos: ANALFABETA -> SECUNDARIA y TECNOLOGO -> SUPERIOR encontramos que el indice (y su varianza) crece mediante crece el nivel de escolaridad. Esta relación no parece tener algún significado, aunque si es posible (para un indice menor a 2, comparando SECUNDARIA y TECNOLOGO) separar municipios con bajos y “altos” indices. Pero cuando se utiliza un maximo indice de 10, existen demasiados outliers, lo cual indica que esta variable no es suficiente para explicar el indice.
esc_mode <- data_hurto_f %>%
select(municipio, escolaridad) %>%
group_by(municipio) %>%
summarise(
moda_escolaridad = get_mode(escolaridad)
)
esc_joined <- muni_joined %>%
filter(indice_hurtos <= 10) %>%
left_join(esc_mode, by = c("municipio", "municipio"), copy = TRUE)
## Warning: Column `municipio` joining character vector and factor, coercing
## into character vector
ggplot(esc_joined, aes(x = moda_escolaridad, y = indice_hurtos, fill = moda_escolaridad)) +
geom_boxplot(alpha = 0.4) +
theme(legend.position = "X")
esc_mode <- data_hurto_f %>%
select(municipio, escolaridad) %>%
group_by(municipio) %>%
summarise(
moda_escolaridad = get_mode(escolaridad)
)
esc_joined <- muni_joined %>%
filter(indice_hurtos <= 2) %>%
left_join(esc_mode, by = c("municipio", "municipio"), copy = TRUE)
## Warning: Column `municipio` joining character vector and factor, coercing
## into character vector
ggplot(esc_joined, aes(x = moda_escolaridad, y = indice_hurtos, fill = moda_escolaridad)) +
geom_boxplot(alpha = 0.4) +
theme(legend.position = "X")
Entre Domingo y Sábado, se observa que el indice de criminalidad decrece levemente hasta el miercoles, y luego vuelve a subir.
esc_mode <- data_hurto_f %>%
select(municipio, dia) %>%
group_by(municipio) %>%
summarise(
moda_dia = get_mode(dia)
)
dia_joined <- muni_joined %>%
filter(indice_hurtos <= 10) %>%
left_join(esc_mode, by = c("municipio", "municipio"), copy = TRUE)
## Warning: Column `municipio` joining character vector and factor, coercing
## into character vector
ggplot(dia_joined, aes(x = moda_dia, y = indice_hurtos, fill = moda_dia)) +
geom_boxplot(alpha = 0.4) +
theme(legend.position = "X")
esc_mode <- data_hurto_f %>%
select(municipio, dia) %>%
group_by(municipio) %>%
summarise(
moda_dia = get_mode(dia)
)
dia_joined <- muni_joined %>%
filter(indice_hurtos <= 2) %>%
left_join(esc_mode, by = c("municipio", "municipio"), copy = TRUE)
## Warning: Column `municipio` joining character vector and factor, coercing
## into character vector
ggplot(dia_joined, aes(x = moda_dia, y = indice_hurtos, fill = moda_dia)) +
geom_boxplot(alpha = 0.4) +
theme(legend.position = "X")
El móvil del agresor no parece tener alguna forma de distinguir entre altos y bajos indices de hurtos.
esc_mode <- data_hurto_f %>%
select(municipio, movil_agresor) %>%
group_by(municipio) %>%
summarise(
moda_movil_agresor = get_mode(movil_agresor)
)
movil_agresor_joined <- muni_joined %>%
filter(indice_hurtos <= 10) %>%
left_join(esc_mode, by = c("municipio", "municipio"), copy = TRUE)
## Warning: Column `municipio` joining character vector and factor, coercing
## into character vector
ggplot(movil_agresor_joined, aes(x = moda_movil_agresor, y = indice_hurtos, fill = moda_movil_agresor)) +
geom_boxplot(alpha = 0.4) +
theme(legend.position = "X") +
coord_flip()
esc_mode <- data_hurto_f %>%
select(municipio, movil_agresor) %>%
group_by(municipio) %>%
summarise(
moda_movil_agresor = get_mode(movil_agresor)
)
movil_agresor_joined <- muni_joined %>%
filter(indice_hurtos <= 2) %>%
left_join(esc_mode, by = c("municipio", "municipio"), copy = TRUE)
## Warning: Column `municipio` joining character vector and factor, coercing
## into character vector
ggplot(movil_agresor_joined, aes(x = moda_movil_agresor, y = indice_hurtos, fill = moda_movil_agresor)) +
geom_boxplot(alpha = 0.4) +
theme(legend.position = "X") +
coord_flip()
esc_mode <- data_hurto_f %>%
select(municipio, edad) %>%
group_by(municipio) %>%
summarise(
moda_edad = mean(edad)
)
edad_joined <- muni_joined %>%
filter(indice_hurtos <= 10) %>%
left_join(esc_mode, by = c("municipio", "municipio"), copy = TRUE)
## Warning: Column `municipio` joining character vector and factor, coercing
## into character vector
ggplot(edad_joined, aes(x = moda_edad, y = indice_hurtos, fill = moda_edad)) +
geom_point() +
theme(legend.position = "X")
esc_mode <- data_hurto_f %>%
select(municipio, edad) %>%
group_by(municipio) %>%
summarise(
moda_edad = mean(edad)
)
edad_joined <- muni_joined %>%
filter(indice_hurtos <= 2) %>%
left_join(esc_mode, by = c("municipio", "municipio"), copy = TRUE)
## Warning: Column `municipio` joining character vector and factor, coercing
## into character vector
ggplot(edad_joined, aes(x = moda_edad, y = indice_hurtos, fill = moda_edad)) +
geom_point() +
theme(legend.position = "X")
esc_mode <- data_hurto_f %>%
select(municipio, estado_civil) %>%
group_by(municipio) %>%
summarise(
moda_estado_civil = get_mode(estado_civil)
)
estado_civil_joined <- muni_joined %>%
filter(indice_hurtos <= 10) %>%
left_join(esc_mode, by = c("municipio", "municipio"), copy = TRUE)
## Warning: Column `municipio` joining character vector and factor, coercing
## into character vector
ggplot(estado_civil_joined, aes(x = moda_estado_civil, y = indice_hurtos, fill = moda_estado_civil)) +
geom_boxplot(alpha = 0.4) +
theme(legend.position = "X")
esc_mode <- data_hurto_f %>%
select(municipio, estado_civil) %>%
group_by(municipio) %>%
summarise(
moda_estado_civil = get_mode(estado_civil)
)
estado_civil_joined <- muni_joined %>%
filter(indice_hurtos <= 2) %>%
left_join(esc_mode, by = c("municipio", "municipio"), copy = TRUE)
## Warning: Column `municipio` joining character vector and factor, coercing
## into character vector
ggplot(estado_civil_joined, aes(x = moda_estado_civil, y = indice_hurtos, fill = moda_estado_civil)) +
geom_boxplot(alpha = 0.4) +
theme(legend.position = "X")
esc_mode <- data_hurto_f %>%
select(municipio, clase_de_empleado) %>%
group_by(municipio) %>%
summarise(
moda_clase_de_empleado = get_mode(clase_de_empleado)
)
clase_de_empleado_joined <- muni_joined %>%
filter(indice_hurtos <= 10) %>%
left_join(esc_mode, by = c("municipio", "municipio"), copy = TRUE)
## Warning: Column `municipio` joining character vector and factor, coercing
## into character vector
ggplot(clase_de_empleado_joined, aes(x = moda_clase_de_empleado, y = indice_hurtos, fill = moda_clase_de_empleado)) +
geom_boxplot(alpha = 0.4) +
theme(legend.position = "X") +
coord_flip()
esc_mode <- data_hurto_f %>%
select(municipio, clase_de_empleado) %>%
group_by(municipio) %>%
summarise(
moda_clase_de_empleado = get_mode(clase_de_empleado)
)
clase_de_empleado_joined <- muni_joined %>%
filter(indice_hurtos <= 2) %>%
left_join(esc_mode, by = c("municipio", "municipio"), copy = TRUE)
## Warning: Column `municipio` joining character vector and factor, coercing
## into character vector
ggplot(clase_de_empleado_joined, aes(x = moda_clase_de_empleado, y = indice_hurtos, fill = moda_clase_de_empleado)) +
geom_boxplot(alpha = 0.4) +
theme(legend.position = "X") +
coord_flip()
arma_spread <- data_hurto %>%
count(municipio, arma_empleada) %>%
group_by(municipio) %>%
mutate(prop = n / sum(n)) %>%
select(-n) %>%
spread(key = arma_empleada, value = prop)
arma_spread
## # A tibble: 897 x 16
## # Groups: municipio [899]
## municipio ALUCINOGENOS `ARMA BLANCA / … `ARMA DE FUEGO` CONTUNDENTES
## <fct> <dbl> <dbl> <dbl> <dbl>
## 1 ABEJORRAL NA 0.0625 0.0625 0.125
## 2 ABREGO NA 0.1 0.3 0.1
## 3 ABRIAQUÍ NA NA NA 0.5
## 4 ACACÍAS NA 0.116 0.0773 0.159
## 5 ACANDÍ NA 0.2 0.2 NA
## 6 ACEVEDO NA 0.182 0.364 NA
## 7 ACHÍ NA NA NA NA
## 8 AGRADO NA NA 0.286 NA
## 9 AGUA DE … NA 0.0909 NA 0.0909
## 10 AGUACHICA NA 0.142 0.432 0.0169
## # … with 887 more rows, and 11 more variables: CORTANTES <dbl>,
## # DIRECTA <dbl>, ESCOPOLAMINA <dbl>, JERINGA <dbl>, `LLAVE
## # MAESTRA` <dbl>, `NO REPORTADO` <dbl>, PALANCAS <dbl>, PERRO <dbl>,
## # `SIN EMPLEO DE ARMAS` <dbl>, `SUSTANCIAS TOXICAS` <dbl>,
## # VEHICULO <dbl>
remove_capital_2 <- function(city_factor2) {
city <- as.character(city_factor2)
no_capital <- gsub(" \\(CT\\)", "", city)
return(no_capital)
}
arma_spread <- arma_spread %>%
left_join(muni_joined_sorted, by = c("municipio" = "municipio"), copy = TRUE)
## Warning: Column `municipio` joining factor and character vector, coercing
## into character vector
head(arma_spread)
## # A tibble: 6 x 19
## # Groups: municipio [6]
## municipio ALUCINOGENOS `ARMA BLANCA / … `ARMA DE FUEGO` CONTUNDENTES
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 ABEJORRAL NA 0.0625 0.0625 0.125
## 2 ABREGO NA 0.1 0.3 0.1
## 3 ABRIAQUÍ NA NA NA 0.5
## 4 ACACÍAS NA 0.116 0.0773 0.159
## 5 ACANDÍ NA 0.2 0.2 NA
## 6 ACEVEDO NA 0.182 0.364 NA
## # … with 14 more variables: CORTANTES <dbl>, DIRECTA <dbl>,
## # ESCOPOLAMINA <dbl>, JERINGA <dbl>, `LLAVE MAESTRA` <dbl>, `NO
## # REPORTADO` <dbl>, PALANCAS <dbl>, PERRO <dbl>, `SIN EMPLEO DE
## # ARMAS` <dbl>, `SUSTANCIAS TOXICAS` <dbl>, VEHICULO <dbl>,
## # poblacion_2017 <int>, cantidad_hurtos <int>, indice_hurtos <dbl>
arma_spread <- arma_spread[order(-arma_spread$indice_hurtos), ]
head(arma_spread)
## # A tibble: 6 x 19
## # Groups: municipio [6]
## municipio ALUCINOGENOS `ARMA BLANCA / … `ARMA DE FUEGO` CONTUNDENTES
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 ARMENIA NA 0.253 0.125 0.125
## 2 FLORENCIA NA 0.285 0.162 0.0686
## 3 SAN ANDR… NA 0.104 0.111 0.0465
## 4 CALDAS NA 0.121 0.319 0.0638
## 5 SABANALA… NA 0.138 0.319 0.0426
## 6 RIONEGRO NA 0.159 0.156 0.142
## # … with 14 more variables: CORTANTES <dbl>, DIRECTA <dbl>,
## # ESCOPOLAMINA <dbl>, JERINGA <dbl>, `LLAVE MAESTRA` <dbl>, `NO
## # REPORTADO` <dbl>, PALANCAS <dbl>, PERRO <dbl>, `SIN EMPLEO DE
## # ARMAS` <dbl>, `SUSTANCIAS TOXICAS` <dbl>, VEHICULO <dbl>,
## # poblacion_2017 <int>, cantidad_hurtos <int>, indice_hurtos <dbl>
ggplot(arma_spread) +
stat_smooth(mapping = aes(x = arma_spread$`ARMA BLANCA / CORTOPUNZANTE`, y = arma_spread$indice_hurtos))
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
## Warning: Removed 450 rows containing non-finite values (stat_smooth).
ggplot(arma_spread, aes(x = arma_spread$`ARMA BLANCA / CORTOPUNZANTE`, y = indice_hurtos)) +
geom_point() + ylim(0, 7) + xlim(0, 1)
## Warning: Removed 472 rows containing missing values (geom_point).
ggplot(arma_spread, aes(x = arma_spread$`ARMA DE FUEGO`, y = indice_hurtos)) +
geom_point() + ylim(0, 7) + xlim(0, 1)
## Warning: Removed 363 rows containing missing values (geom_point).
Se realiza analisis bivariado de todas las variables en el dataset de educación básica contra el indice de hurtos a persona, por municipio. Se observa que ninguna de las variables del dataset de educación parecen tener una relación con el indice, por lo tanto este dataset no es útil para tratar de explicar el hurto a personas.
str(edu_joined)
## 'data.frame': 59 obs. of 38 variables:
## $ municipio : chr "MEDELLÍN" "BELLO" "CALDAS" "NARIÑO" ...
## $ poblacion_2017 : int 2508452 473423 79652 17686 124219 1228271 649111 1024882 12342 123906 ...
## $ cantidad_hurtos : int 17522 1594 141 9 654 5585 1079 1954 14 160 ...
## $ indice_hurtos : num 6.985 3.367 1.77 0.509 5.265 ...
## $ población_5_16 : int 370202 93422 125643 223685 24795 237521 140244 210840 267545 28640 ...
## $ tasa_matriculación_5_16 : num 101.3 78.5 73.6 63.5 82.8 ...
## $ cobertura_neta : num 101.2 78.5 73.5 63.5 82.5 ...
## $ cobertura_neta_transición : num 73.1 53.4 48.6 33 57 ...
## $ cobertura_neta_primaria : num 98.6 77.2 67.7 59.3 76.6 ...
## $ cobertura_neta_secundaria : num 89.9 67.3 65.1 50.5 74 ...
## $ cobertura_neta_media : num 54.9 38.3 40.5 25.5 46.3 ...
## $ cobertura_bruta : num 116.3 89.8 84.3 76.2 94 ...
## $ cobertura_bruta_transición : num 88.5 65.6 61.1 60.1 70.9 ...
## $ cobertura_bruta_primaria : num 114 91.3 84.8 85.4 90.2 ...
## $ cobertura_bruta_secundaria : num 130.2 101.8 93.4 78.9 106.5 ...
## $ cobertura_bruta_media : num 107.6 74.4 75.9 56.1 89.3 ...
## $ tamaño_promedio_de_grupo : num 34 34.5 26.5 17 31.1 ...
## $ sedes_conectadas_a_internet: num 98.3 93.7 31.2 21.6 100 ...
## $ deserción : num 3.46 3.06 3.73 1.52 3.92 1.14 1.22 2.77 3.1 3.31 ...
## $ deserción_transición : num 3.05 2.94 3.8 1.18 2.38 1.84 1.9 4.26 2.93 6.62 ...
## $ deserción_primaria : num 2.71 2.71 2.85 1.03 2.41 1.05 1.24 2.33 2.11 2.82 ...
## $ deserción_secundaria : num 4.68 3.82 4.95 2.06 6.06 1.21 1.23 3.1 4.33 3.49 ...
## $ deserción_media : num 2.8 2.14 3.28 2.15 3.38 0.86 0.74 2.51 3.9 2.12 ...
## $ aprobación : num 85.3 96.1 88.6 97.4 80.2 ...
## $ aprobación_transición : num 96.8 96.7 95.8 98.3 97 ...
## $ aprobación_primaria : num 88.6 96.5 91 97.9 86.1 ...
## $ aprobación_secundaria : num 77.8 95.3 83.8 96.7 69.3 ...
## $ aprobación_media : num 89.6 97 90.4 97.1 85 ...
## $ reprobación : num 11.23 0.84 7.64 1.06 15.87 ...
## $ reprobación_transición : num 0.15 0.36 0.37 0.48 0.62 1.84 0.77 0.41 0.12 0.52 ...
## $ reprobación_primaria : num 8.7 0.83 6.14 1.11 11.53 ...
## $ reprobación_secundaria : num 17.51 0.92 11.23 1.21 24.61 ...
## $ reprobación_media : num 7.57 0.83 6.36 0.73 11.64 ...
## $ repitencia : num 10.16 1.45 2.08 2.61 11.91 ...
## $ repitencia_transición : num 1.37 0.25 0.28 0.9 1.76 1.36 0.47 7.78 1.91 3.05 ...
## $ repitencia_primaria : num 8.96 1.48 1.64 2.3 9.87 1.42 0.35 7.35 2.98 3.4 ...
## $ repitencia_secundaria : num 14.98 1.96 3.32 3.75 17.17 ...
## $ repitencia_media : num 4.83 0.41 0.98 1.46 7.9 0.35 0.2 3.82 1.63 1.86 ...
ggplot(edu_joined) +
geom_point(aes(x = tasa_matriculación_5_16, y = indice_hurtos)) +
stat_smooth(aes(x = tasa_matriculación_5_16, y = indice_hurtos), method = "lm", se = TRUE)
ggplot(edu_joined) +
geom_point(aes(x = tamaño_promedio_de_grupo, y = indice_hurtos)) +
stat_smooth(aes(x = tamaño_promedio_de_grupo, y = indice_hurtos), method = "lm", se = TRUE)
ggplot(edu_joined) +
geom_point(aes(x = sedes_conectadas_a_internet, y = indice_hurtos)) +
stat_smooth(aes(x = sedes_conectadas_a_internet, y = indice_hurtos), method = "lm", se = TRUE)
ggplot(edu_joined) +
geom_point(aes(x = cobertura_neta, y = indice_hurtos)) +
stat_smooth(aes(x = cobertura_neta, y = indice_hurtos), method = "lm", se = TRUE)
ggplot(edu_joined) +
geom_point(aes(x = cobertura_neta_transición, y = indice_hurtos)) +
stat_smooth(aes(x = cobertura_neta_transición, y = indice_hurtos), method = "lm", se = TRUE)
ggplot(edu_joined) +
geom_point(aes(x = cobertura_neta_primaria, y = indice_hurtos)) +
stat_smooth(aes(x = cobertura_neta_primaria, y = indice_hurtos), method = "lm", se = TRUE)
ggplot(edu_joined) +
geom_point(aes(x = cobertura_neta_secundaria, y = indice_hurtos)) +
stat_smooth(aes(x = cobertura_neta_secundaria, y = indice_hurtos), method = "lm", se = TRUE)
ggplot(edu_joined) +
geom_point(aes(x = cobertura_neta_media, y = indice_hurtos)) +
stat_smooth(aes(x = cobertura_neta_media, y = indice_hurtos), method = "lm", se = TRUE)
ggplot(edu_joined) +
geom_point(aes(x = deserción, y = indice_hurtos)) +
stat_smooth(aes(x = deserción, y = indice_hurtos), method = "lm", se = TRUE)
ggplot(edu_joined) +
geom_point(aes(x = deserción_transición, y = indice_hurtos)) +
stat_smooth(aes(x = deserción_transición, y = indice_hurtos), method = "lm", se = TRUE)
ggplot(edu_joined) +
geom_point(aes(x = deserción_primaria, y = indice_hurtos)) +
stat_smooth(aes(x = deserción_primaria, y = indice_hurtos), method = "lm", se = TRUE)
ggplot(edu_joined) +
geom_point(aes(x = deserción_secundaria, y = indice_hurtos)) +
stat_smooth(aes(x = deserción_secundaria, y = indice_hurtos), method = "lm", se = TRUE)
ggplot(edu_joined) +
geom_point(aes(x = deserción_media, y = indice_hurtos)) +
stat_smooth(aes(x = deserción_media, y = indice_hurtos), method = "lm", se = TRUE)
ggplot(edu_joined) +
geom_point(aes(x = aprobación, y = indice_hurtos)) +
stat_smooth(aes(x = aprobación, y = indice_hurtos), method = "lm", se = TRUE)
ggplot(edu_joined) +
geom_point(aes(x = aprobación_transición, y = indice_hurtos)) +
stat_smooth(aes(x = aprobación_transición, y = indice_hurtos), method = "lm", se = TRUE)
ggplot(edu_joined) +
geom_point(aes(x = aprobación_primaria, y = indice_hurtos)) +
stat_smooth(aes(x = aprobación_primaria, y = indice_hurtos), method = "lm", se = TRUE)
ggplot(edu_joined) +
geom_point(aes(x = aprobación_secundaria, y = indice_hurtos)) +
stat_smooth(aes(x = aprobación_secundaria, y = indice_hurtos), method = "lm", se = TRUE)
ggplot(edu_joined) +
geom_point(aes(x = aprobación_media, y = indice_hurtos)) +
stat_smooth(aes(x = aprobación_media, y = indice_hurtos), method = "lm", se = TRUE)
ggplot(edu_joined) +
geom_point(aes(x = reprobación, y = indice_hurtos)) +
stat_smooth(aes(x = reprobación, y = indice_hurtos), method = "lm", se = TRUE)
ggplot(edu_joined) +
geom_point(aes(x = reprobación_transición, y = indice_hurtos)) +
stat_smooth(aes(x = reprobación_transición, y = indice_hurtos), method = "lm", se = TRUE)
ggplot(edu_joined) +
geom_point(aes(x = reprobación_primaria, y = indice_hurtos)) +
stat_smooth(aes(x = reprobación_primaria, y = indice_hurtos), method = "lm", se = TRUE)
ggplot(edu_joined) +
geom_point(aes(x = reprobación_secundaria, y = indice_hurtos)) +
stat_smooth(aes(x = reprobación_secundaria, y = indice_hurtos), method = "lm", se = TRUE)
ggplot(edu_joined) +
geom_point(aes(x = reprobación_media, y = indice_hurtos)) +
stat_smooth(aes(x = reprobación_media, y = indice_hurtos), method = "lm", se = TRUE)
El dataset de armas incautadas fue seleccionado pues, se cuenta con la hipotesis de a mayor cantidad de armas incautadas, menor será el indice de hurtos. De manera que se pasa a realizar un analisis multivariado con dicha variable. A continuaciòn los resultados:
munic_spread <- data_hurto_f_l_armas %>%
group_by(municipio) %>%
summarize(
cantidad_incauta = n()
)
munic_spread_sorted <- munic_spread[order(-munic_spread$cantidad_incauta),]
remove_capital_2 <- function(city_factor2) {
city <- as.character(city_factor2)
no_capital <- gsub(" \\(CT\\)", "", city)
return(no_capital)
}
munic_spread_sorted$municipio <- as.factor(sapply(munic_spread_sorted$municipio, remove_capital_2))
munic_spread_sorted <- munic_spread_sorted %>%
left_join(muni_joined_sorted, by = c("municipio" = "municipio"), copy = TRUE)
munic_spread_sorted <- munic_spread_sorted[order(-munic_spread_sorted$cantidad_incauta),]
munic_spread_sorted<-head(munic_spread_sorted,30)
head(munic_spread_sorted)
## # A tibble: 6 x 5
## municipio cantidad_incauta poblacion_2017 cantidad_hurtos indice_hurtos
## <chr> <int> <int> <int> <dbl>
## 1 BOGOTÁ D.C. 1829 8080734 64188 7.94
## 2 BARRANQUIL… 1066 1228271 5585 4.55
## 3 CALI 1061 2420114 14681 6.07
## 4 MEDELLÍN 563 2508452 17522 6.99
## 5 CÚCUTA 403 662673 2267 3.42
## 6 CARTAGENA 375 1024882 1954 1.91
ggplot(munic_spread_sorted, aes(x=cantidad_incauta, y=indice_hurtos)) +
geom_point()+geom_smooth() +ylim(0, 7) + xlim(0,500)
## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
La gráfica anterior nos permite observar que los indices de hurtos pueden estar inversamente relacionados con los proces de incautación presentados en el municipio.